如何解决如何实现数据帧对象的重采样平均值,以便在计算平均值时排除零值
我有一个带有时间戳值的数据框。我已经能够弄清楚如何使用数据帧的重采样方法并将函数 last() 或 mean() 应用于结果。我是这样做的:
May 7,2021
这里,df_1 给出的结果是每个重采样周期中的最后一个值,df_2 给出的结果是每个重采样周期中所有值的平均值。
现在的问题是我的数据包含很多零值,所以我希望 df_1 的结果包含最后一个非零值,而 df_2 的结果只包含那些非零值的平均值。我无法在文档 (resampling link) 中找到这样做的方法。
请提出适当的方法来实现这一目标。
解决方法
zero
可以替换为 np.nan
,然后可以应用函数。
df=pd.DataFrame({
'timestamp':pd.date_range('2020.01.01',periods=6,freq='30S'),'val':[1,2,3,4]
})
df=df.set_index('timestamp')
df.val = df.val.replace(0,np.nan)
df = df.resample('60s').agg(['mean','last'])
df
输出
val
mean last
timestamp
2020-01-01 00:00:00 1.5 2.0
2020-01-01 00:01:00 3.0 3.0
2020-01-01 00:02:00 4.0 4.0
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。