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
這會概括您的想法嗎?
添加回答
舉報