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。
您可以使用蒙版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)
| 归档时间: |
|
| 查看次数: |
100 次 |
| 最近记录: |