Pandas—还原带有NaN值的总和



是否有一种方法可以从原始列的cumsum()列中获得原始列?

例如:

df = pd.DataFrame({'Original': [1, 0, 0, 1, 0, 5, 0, np.NaN, np.NaN,4, 0, 0],
'CumSum': [1, 1, 1, 2, 2, 7, 7, np.NaN, np.NaN, 11, 11, 11]})

在上面的例子df中,是否有可能仅使用CumSum列获得原始列?

在我的原始数据集中,我有一个类似于CumSum列的列,我想获得原始的。我试图找到一个内置的函数,可以做,但没有找到任何。

您可以使用:

df['Original2'] = (df['CumSum'].ffill().diff()
.mask(df['CumSum'].isna())
.fillna(df['CumSum'])
)

输出:

Original  CumSum  Original2
0        1.0     1.0        1.0
1        0.0     1.0        0.0
2        0.0     1.0        0.0
3        1.0     2.0        1.0
4        0.0     2.0        0.0
5        5.0     7.0        5.0
6        0.0     7.0        0.0
7        NaN     NaN        NaN
8        NaN     NaN        NaN
9        4.0    11.0        4.0
10       0.0    11.0        0.0
11       0.0    11.0        0.0

最新更新