我有2個資料框:
df1 = pd.DataFrame({"id1": ["A", "B", "C", "D"], "id2": ["1", "2", "2", "1"], "id3": ["33", "232", "343", "555"]})
df2 = pd.DataFrame({"id1": ["A", "B", "F", "C", "D", "E"], "id2": ["1", "2", "2", "1", "1", "2"], "id3": ["33", "11", "77", "99", "555","88"]})
我想得到一個輸出,告訴我哪些行df2已被修改(Y 表示是,N 表示否),如下所示:
| id1 | 修改_ID | |
|---|---|---|
| 0 | 一種 | ? |
| 1 | 乙 | 是 |
| 2 | F | ? |
| 3 | C | 是 |
| 4 | D | ? |
| 5 | 乙 | ? |
uj5u.com熱心網友回復:
您可以merge構建一個布爾掩碼,如果值沒有更改(或擴展)并map根據它回傳 True 和 Y/N 值:
df2 = df2.merge(df1, on='id1', how='left', suffixes=('_',''))
df2['Modified_ID'] = (df2['id2_'].eq(df2['id2']) | df2['id2'].isna()).map({True:'N', False:'Y'})
df2 = df2.drop(columns=['id2_','id2'])
輸出:
id1 Modified_ID
0 A N
1 B Y
2 F N
3 C Y
4 D N
5 E N
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/472054.html
