我正在尝试使用 pandas 将 15 分钟周期重新采样为 1 小时周期,但通过应用自定义函数。我的数据帧采用此格式;
Date val1 val2
2016-01-30 07:00:00 49.0 45.0
2016-01-30 07:15:00 49.0 44.0
2016-01-30 07:30:00 52.0 47.0
2016-01-30 07:45:00 60.0 46.0
2016-01-30 08:00:00 63.0 61.0
2016-01-30 08:15:00 61.0 60.0
2016-01-30 08:30:00 62.0 61.0
2016-01-30 08:45:00 63.0 61.0
2016-01-30 09:00:00 68.0 60.0
2016-01-30 09:15:00 71.0 70.0
2016-01-30 09:30:00 71.0 70.0
..我想用这个函数重新采样;
def log_add(array_like):
return (10*math.log10((sum([10**(i/10) for i in array_like])))))
我愿意;
df.resample('1H').apply(log_add)
但这会返回一个空的 DF,这样做;
df.resample('1H').apply(lambda x: log_add(x))
也做同样的事情。有人知道为什么它不能正确应用该功能吗?
任何帮助将不胜感激,谢谢。
您可以在 0.19.0 pandas 中实现的内容on
添加参数:
print (df.resample('1H', on='Date').apply(log_add))
或者Date
设置为set_index
index
:
df.set_index('Date', inplace=True)
print (df.resample('1H').apply(log_add))
还要首先检查列Date
的dtype
是否datetime
,如果不使用to_datetime
:
print (df.dtypes)
Date object
val1 float64
val2 float64
dtype: object
df.Date = pd.to_datetime(df.Date)
print (df.dtypes)
Date datetime64[ns]
val1 float64
val2 float64
dtype: object