pandas 向后填充列值,直到另一列值为0

pkwftd7m  于 2023-03-28  发布在  其他
关注(0)|答案(1)|浏览(113)

我有一个用户ID为col1,col2的数据集。col1只包含NaN或0。我想回填col2的值,直到每个用户ID都达到col1== 0,并且限制为10。如果距离小于或等于10行,则回填直到col1==0。在这种情况下,不做任何事情。
输入:

user_id   col1   col2          
  3        NaN    NaN
  3        0      NaN
  3        NaN    NaN 
  3        NaN     5
  5        0       NaN
  5        NaN     9
 ...

预期输出:

user_id   col1   col2          
  3        NaN    NaN
  3        0       5
  3        NaN     5 
  3        NaN     5
  5        0       9
  5        NaN     9
 ...
5vf7fwbs

5vf7fwbs1#

使用user_idcol1创建组:

df['col2'] = df.groupby(['user_id', df['col1'].eq(0).cumsum()])['col2'].bfill()
print(df)

# Output
   user_id  col1  col2
0        3   NaN   NaN
1        3   0.0   5.0
2        3   NaN   5.0
3        3   NaN   5.0
4        5   0.0   9.0
5        5   NaN   9.0

相关问题