Pandas Resample应用自定义功能?

时间:2016-12-23 11:31:02

标签: python pandas

我正在尝试使用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))

同样也是如此。有人为什么没有正确应用这个功能?

任何帮助都将不胜感激,谢谢。

1 个答案:

答案 0 :(得分:3)

您可以在0.19.0 pandas中添加参数on

print (df.resample('1H', on='Date').apply(log_add))

或者通过set_indexDate设置为index

df.set_index('Date', inplace=True)
print (df.resample('1H').apply(log_add))

另外,首先检查列dtype的{​​{1}}是Date,如果不是to_datetime,则

datetime