python - 用十进制小时数插入 pandas 数据框列
问题描述
我在数据框中有一列,小时数以十进制表示(0.0, 0.15, 0.30, 0.45, 1.0, 1.15, ...., 23.45)
,我想每分钟而不是每 15 分钟进行一次插值。
我试过df.interpolate()
了,但结果应该是0.59, 1.0
,而不是0.59, 0.60
......有什么想法可以解决这个问题吗?
解决方案
使用这种时间格式,工作可能会很痛苦。我想到的是,您可以生成另一个相隔 1 分钟的数据帧,然后将初始数据帧合并到左侧。
import pandas as pd
import numpy as np
def gen_time(interval=15):
m = 0
h = 0
tm = []
while h*60 + m <= 23*60 + 45:
tm.append(h+m*1e-2)
m += interval
if m == 60:
h += 1
m = 0
return tm
tm = gen_time()
df = pd.DataFrame({"time":tm,
"values":np.random.randn(len(tm))})
ddf = pd.DataFrame({"time":gen_time(interval=1)})
df = pd.merge(ddf, df,on="time", how="left")
推荐阅读
- reactjs - Gatsby 在使用 onLoad 时构建出现窗口错误
- c# - C# 并行用于减速
- c# - 如何在 wpf 应用程序中制作自定义热键并执行各种操作
- jquery - jQuery检查动画左侧是否大于1000px
- javascript - Javascript 闭包编译器
- c++ - 如何快速读取文件以检查签名/幻数?
- python - 如何使用变量来引用 Python SQLite 中的列?
- android-studio - 为什么 Android Studio 不显示小部件的可能属性?
- c# - 反序列化 RSA 公钥和私钥 C#
- node.js - MongoDB 的聚合 $search 没有提取任何结果