我正在匹配兩個大型數據集,并嘗試通過將原始數據集與其他數據集進行比較來執行更新、刪除和創建操作。如何更新原始數據集中 10 列中的 2 或 3 列并保持其他列的值與以前相同?我嘗試合并但無濟于事。合并對我不起作用。原始數據:id | full_name | date1 | John | 02-23-20062 | Paul Elbert | 09-29-20013 | Donag | 11-12-20134 | Tom Holland | 06-17-2016其他數據:id | full_name | date1 | John | 02-25-20182 | Paul | 03-09-20013 | Donag | 07-09-20174 | Tom | 05-09-2016在嘗試了這個之后,我手動檢查了我沒有得到預期的結果。original[['id']].merge(other[['id','date']],on='id')我可以用地圖解決這個問題嗎?當 ID 匹配時,更新日期列中的所有值,而不更改原始數據集名稱列中的任何值
2 回答

慕姐4208626
TA貢獻1852條經驗 獲得超7個贊
使用pandas.Series.map:
df['date']=df['id'].map(other_df.set_index('id ')['date'])
print(df)
id full_name date
0 1 John 02-25-2018
1 2 Paul Elbert 03-09-2001
2 3 Donag 07-09-2017
3 4 Tom Holland 05-09-2016
檢查其他條件:
cond=df.status.str.contains('new')
df.loc['date',cond]=df.loc['id',cond].map(other_df.set_index('id ')['date'])

呼喚遠方
TA貢獻1856條經驗 獲得超11個贊
DataFrame.update
如果您在和上正確設置id
為索引, Pandas就會這樣做:original
other
original.update(other[["date"]])
添加回答
舉報
0/150
提交
取消