【发布时间】:2015-04-20 13:46:32
【问题描述】:
我有一个包含以下列的数据框:{'day','measurement'}
一天内可能会有多次测量(或根本没有测量)
例如:
day | measurement
1 | 20.1
1 | 20.9
3 | 19.2
4 | 20.0
4 | 20.2
和一个系数数组:
coef={-1:0.2, 0:0.6, 1:0.2}
我的目标是对数据进行重新采样并使用系数对其进行平均(缺失的数据应该被忽略)。
这是我编写的计算代码
window=[-1,0,-1]
df['resampled_measurement'][df['day']==d]=[coef[i]*df['measurement'][df['day']==d-i].mean() for i in window if df['measurement'][df['day']==d-i].shape[0]>0].sum()
df['resampled_measurement'][df['day']==d]/=[coef[i] for i in window if df['measurement'][df['day']==d-i].shape[0]>0].sum()
对于上面的例子,输出应该是:
Day measurement
1 20.500
2 19.850
3 19.425
4 19.875
问题是代码永远运行,我很确定有更好的方法来重新采样系数。
任何建议将不胜感激!
【问题讨论】:
-
能否请您帮助我了解相关性如何转化为上述预期输出?我的理解是,例如,在第 4 天,您需要
(0.2 * 19.2 + 0.6 * 20.1) / 0.8,即19.875,而不是19.97。如果您可以仅完成第 4 天或第 3 天的计算,那会有所帮助。 -
我的错误,谢谢@SANand
-
@UriGoren 第 2 天、第 3 天的测量结果是否符合预期?我想,你也应该更新这些!
标签: python pandas dataframe moving-average weighted-average