gpt4 book ai didi

python - 用前一行值乘以另一列填充 nan 的 Pandas

转载 作者:行者123 更新时间:2023-12-03 20:24:41 25 4
gpt4 key购买 nike

我有数据框,我想用 pct_change 列乘以前几行的值填充 nan

    col_to_fill       pct_change
0 1 NaN
1 2 1.0
2 10 0.5
3 nan 0.5
4 nan 1.3
5 nan 2
6 5 3
所以对于 3rd row 10*0.5 = 5并使用该填充值填充下一行,如果它是 nan。
    col_to_fill        pct_change
0 1 NaN
1 2 1.0
2 10 0.5
3 5 0.5
4 6.5 1.3
5 13 2
6 5 3
我用过这个
while df['col_to_fill'].isna().sum() > 0:
df.loc[df['col_to_fill'].isna(), 'col_to_fill'] = df['col_to_fill'].shift(1) * df['pct_change']
但它花费了太多时间,因为它只在一个循环中填充前一行是 nonnan 的那些行。

最佳答案

试试 cumprodffill

s = df.col_to_fill.ffill()*df.loc[df.col_to_fill.isna(),'pct_change'].cumprod()
df.col_to_fill.fillna(s, inplace=True)
df
Out[90]:
col_to_fill pct_change
0 1.0 NaN
1 2.0 1.0
2 10.0 0.5
3 5.0 0.5
4 6.5 1.3
5 13.0 2.0
6 5.0 3.0

关于python - 用前一行值乘以另一列填充 nan 的 Pandas ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63649438/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com