填充前一行的总和以及数据框中另一列的变化

EMT*_*EMT 2 python dataframe pandas

我有一些具有一些nan值的数据框。我想通过将前一行添加到列中的更改来填充它们Factor。数据框如下所示:

        Value Col    Factor
2022-11-30  0.020       84
2022-12-31  0.015       77
2023-01-31  NaN         90
2023-02-28  NaN         44
2023-03-31  NaN         39
Run Code Online (Sandbox Code Playgroud)

为了填充df.iloc[2, 0],我想对列df.iloc[1,0]中的变化求和Factor(在这种情况下是 90-77 = 13)。预期输出是这样的:

        Value Col    Factor
2022-11-30  0.020       84
2022-12-31  0.015       77
2023-01-31  13.015      90
2023-02-28  59.015      44
2023-03-31  64.015      39
Run Code Online (Sandbox Code Playgroud)

我尝试使用 for 循环,它有效。但找不到pandas函数但逐行填充nans的方法。我曾经df['Factor'].diff(1)获得列的差异Factor,但不知道如何逐行填充这些 nan。

moz*_*way 5

您可以使用蒙版cumsum

df['Value Col'] = (
df['Factor'].diff()
 .abs()
 .where(df['Value Col'].isna())
 .cumsum()
 .add(df['Value Col'].ffill(), fill_value=0)
)
Run Code Online (Sandbox Code Playgroud)

输出:

            Value Col  Factor
2022-11-30      0.020      84
2022-12-31      0.015      77
2023-01-31     13.015      90
2023-02-28     59.015      44
2023-03-31     64.015      39
Run Code Online (Sandbox Code Playgroud)