我正在匹配两个大型数据集,并尝试通过将原始数据集与其他数据集进行比较来执行更新、删除和创建操作。如何更新原始数据集中 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
提交
取消