我正在尝试使用pandas将15分钟的时间段重新采样为1小时,但是应用了自定义功能。我的DataFrame采用这种格式;
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 :(得分:3)
您可以在0.19.0 pandas中添加参数on
:
print (df.resample('1H', on='Date').apply(log_add))
或者通过set_index
将Date
设置为index
:
df.set_index('Date', inplace=True)
print (df.resample('1H').apply(log_add))
另外,首先检查列dtype
的{{1}}是Date
,如果不是to_datetime
,则
datetime