【发布时间】:2020-08-29 16:41:55
【问题描述】:
我有一个数据框,我想用之前行中的值与 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 的那些行。
【问题讨论】: