我想重新采样列数据帧 - 也就是说,我想在sum()
样式操作的反向上对其进行上采样,假设每个点都是偶数。我并不特别关心最后一点的价值 - 就我而言,这是无关紧要的。
这是一个简单的版本:
Input Output
0 10.0 3.33
1 NaN 3.33
2 NaN 3.33
3 24.0 6.00
4 NaN 6.00
5 NaN 6.00
6 NaN 6.00
7 15.0 15.00
这样做有干净/ pythonic的方法吗?我没有在重新采样库中找到这样的东西,但是在我合作一个迭代解决方案之前想要问更有经验的人。
使用groupby
的transform
和mean
:
df['Input'].fillna(0).groupby(df['Input'].notna().cumsum()).transform('mean')
0 3.333333
1 3.333333
2 3.333333
3 6.000000
4 6.000000
5 6.000000
6 6.000000
7 15.000000
Name: Input, dtype: float64
哪里,
df['Input'].notna().cumsum()
0 1
1 1
2 1
3 2
4 2
5 2
6 2
7 3
Name: Input, dtype: int64
这里的想法是计算非空值的平均值,包括它后面的所有空单元格,并将结果广播回输入。我们需要在这里调用fillna
,因为mean
默认会忽略NaN。