2 回答
TA贡献1826条经验 获得超6个赞
您可以先获取每组的行数,然后计算 if not(row count equals 0 and row equals d) 它处理每组中不等于 d 的第一行。
idx = df.groupby('account_num').cumcount()
out = df[~(idx.eq(0) & df['trans_cdi'].eq('d'))]
print(out)
account_num trans_cdi
0 1 c
1 1 d
3 3 c
4 3 d
TA贡献1804条经验 获得超7个赞
filter由于某种原因我无法使用它,所以我transform改用了索引,它返回了预期的输出:
df2 = df[df.groupby('account_num')['trans_cdi'].transform(lambda x: (x.iloc[0] != "d") | (x.index != x.index[0]))]
account_num trans_cdi
0 1 c
1 1 d
3 3 c
4 3 d
这会概括您的想法吗?
添加回答
举报
