通过地图功能根据唯一ID将数据从一个数据集复制到另一个数据集

时间:2019-09-19 17:59:55

标签: python pandas

我正在匹配两个大型数据集,并试图通过将其与其他数据集进行比较来对原始数据集执行更新,删除和创建操作。如何在原始数据集中的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匹配,则更新日期列中的所有值,而不会更改原始数据集的名称列中的任何值

2 个答案:

答案 0 :(得分:0)

如果在DataFrame.updateid上都将original设置为索引,则熊猫的other会这样做:

original.update(other[["date"]])

答案 1 :(得分:0)

使用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'])