我正在匹配两个大型数据集,并试图通过将其与其他数据集进行比较来对原始数据集执行更新,删除和创建操作。如何在原始数据集中的10个中更新2或3列,并保持其他列的值与以前相同?
我尝试合并,但无济于事。合并对我不起作用。
原始数据:
id | full_name | date
1 | John | 02-23-2006
2 | Paul Elbert | 09-29-2001
3 | Donag | 11-12-2013
4 | Tom Holland | 06-17-2016
其他数据:
id | full_name | date
1 | John | 02-25-2018
2 | Paul | 03-09-2001
3 | Donag | 07-09-2017
4 | Tom | 05-09-2016
尝试此操作后,我手动进行了检查,但没有得到预期的结果。
original[['id']].merge(other[['id','date']],on='id')
我可以用地图解决此问题吗?如果ID匹配,则更新日期列中的所有值,而不会更改原始数据集的名称列中的任何值
答案 0 :(得分:0)
如果在DataFrame.update
和id
上都将original
设置为索引,则熊猫的other
会这样做:
original.update(other[["date"]])
答案 1 :(得分:0)
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'])