No_*_*ody 5 python group-by python-3.x pandas pandas-groupby
我有一个数据框
Id Seqno. Event
1 2 A
1 3 B
1 5 A
1 6 A
1 7 D
2 0 E
2 1 A
2 2 B
2 4 A
2 6 B
Run Code Online (Sandbox Code Playgroud)
我想要获取自每个 ID 最近出现模式 A = 2 以来发生的所有事件。序列号。是每个 ID 的序列号。输出将是
Id Seqno. Event
1 5 A
1 6 A
1 7 D
2 1 A
2 2 B
2 4 A
2 6 B
Run Code Online (Sandbox Code Playgroud)
到目前为止我尝试过,
y=x.groupby('Id').apply( lambda
x:x.eventtype.eq('A').cumsum().tail(2)).reset_index()
p=y.groupby('Id').apply(lambda x:
x.iloc[0]).reset_index(drop=True)
q= x.reset_index()
s= pd.merge(q,p,on='Id')
dd= s[s['index']>=s['level_1']]
Run Code Online (Sandbox Code Playgroud)
我想知道是否有好的方法可以做到这一点。
使用groupbywith cumsum,从每组 A 的计数中减去它,然后过滤:
g = df['Event'].eq('A').groupby(df['Id'])
df[(g.transform('sum') - g.cumsum()).le(1)]
Id Seqno. Event
2 1 5 A
3 1 6 A
4 1 7 D
6 2 1 A
7 2 2 B
8 2 4 A
9 2 6 B
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
892 次 |
| 最近记录: |