假設我有以下資料框(重復ID1 和 3):
ID Name ALT_ID
1 Jack 111
1 James 222
2 Joe 333
3 Jim 444
3 Jen 555
如何為每次出現ID替換重復項?ALT_ID我希望最終的資料框看起來像這樣:
ID Name ALT_ID
1 Jack 111
222 James 222
2 Joe 333
3 Jim 444
555 Jen 555
這將是一個龐大的資料框,但運行時間長并不是真正的問題。如果我可以提供更多資訊,請告訴我,謝謝!
到目前為止,我一直在使用“pandas”,所以任何可以從那個庫中幫助我的函式都會是一個很大的好處!
uj5u.com熱心網友回復:
只需使用pandas.DataFrame.duplicated, 您的資料框的一種方法來定位您的“ID”列中哪些值是重復的。然后使用相同的行,但取“ALT_ID”中的值:
>>> df.loc[df["ID"].duplicated(), "ID"] = df.loc[df["ID"].duplicated(), "ALT_ID"]
>>> df
ID Name ALT_ID
0 1 Jack 111
1 222 James 222
2 2 Joe 333
3 3 Jim 444
4 555 Jen 555
uj5u.com熱心網友回復:
不覆寫任何內容df:
df2 = df.assign(ID=df['ID'].where(~df.duplicated(['ID']), df['ALT_ID']))
>>> df2
ID Name ALT_ID
0 1 Jack 111
1 222 James 222
2 2 Joe 333
3 3 Jim 444
4 555 Jen 555
或者,就地:
mask = df.duplicated('ID')
df.loc[mask, 'ID'] = df.loc[mask, 'ALT_ID']
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/435576.html
上一篇:如何使用pandasDataframe根據“第一”條件對不同列進行操作?
下一篇:計算串列內標簽的性能方法(熊貓)
