python - Pandas 重采样应用自定义功能?

标签 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))

也一样。有人知道为什么它没有正确应用该功能吗?

如有任何帮助,我们将不胜感激。

最佳答案

您可以在 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))

同时首先检查 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

关于python - Pandas 重采样应用自定义功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41300653/

相关文章:

python - Pandas 数据框 groupby 的峰度不起作用

python - Pandas 中的高级数据透视表

python - 在numpy中按元素灰度划分RGB图像

pandas - 创建组合 CSV 文件

python - 从文本文件创建字典

Python 3.x 对列表中包含数字和字母的文件名进行排序

python - Pandas 的自定义财政季度?

python - 在其他列定义的窗口内累积应用

python - Django - 如何使用 sorl-thumbnail?

python 3 : Why does __spec__ work?