只要您在log
列中找到第一个ID,我愿意为每个ID填充log
的值
示例:
df
id log
1 0
1 1
1 0
1 0
2 1
2 0
3 1
3 0
3 1
到
id log ffil_log
1 0 0
1 1 1
1 0 1
1 0 1
2 1 1
2 0 1
3 1 1
3 0 1
3 1 1
我的尝试是:
df['ffil_log']=df.log.where(df.log==1).groupby(df.id).ffill()
答案 0 :(得分:3)
您可以使用cummax
和groupby
,例如:
df['ffil_log'] = df.groupby('id')['log'].cummax()
对于每个ID,一旦您连续达到1,它将是其后一个的值,您将按预期获得
id log ffil_log
0 1 0 0
1 1 1 1
2 1 0 1
3 1 0 1
4 2 1 1
5 2 0 1
6 3 1 1
7 3 0 1
8 3 1 1