亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在 python 中的 groupby 之后刪除一行?

如何在 python 中的 groupby 之后刪除一行?

哆啦的時光機 2023-03-16 11:07:02
我有以下數據框:account_num   trans_cdi1             c1             d  3             d3             c3             d它是更大數據框的一部分。首先,我想對 account_num 列進行分組,然后刪除組中 trans_cdi 列中以“d”開頭的行。所以在這種情況下,新的數據框看起來像這樣:account_num   trans_cdi1             c1             d  3             c3             d我那樣試過,但它刪除了整個組:df = df.groupby("account_numb").filter(lambda x: x["trans_cdi"].iloc[0] != "d")謝謝!
查看完整描述

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


查看完整回答
反對 回復 2023-03-16
?
三國紛爭

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

這會概括您的想法嗎?


查看完整回答
反對 回復 2023-03-16
  • 2 回答
  • 0 關注
  • 99 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號