Python:使用反向和运算进行上采样

问题描述 投票:1回答:1

我想重新采样列数据帧 - 也就是说,我想在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的方法吗?我没有在重新采样库中找到这样的东西,但是在我合作一个迭代解决方案之前想要问更有经验的人。

python pandas dataframe resampling
1个回答
1
投票

使用groupbytransformmean

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。

© www.soinside.com 2019 - 2024. All rights reserved.