通过匹配并与条件匹配

时间:2018-07-05 20:50:36

标签: python pandas numpy

只要您在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()

1 个答案:

答案 0 :(得分:3)

您可以使用cummaxgroupby,例如:

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