根据映射函数的唯一ID将数据从一个数据集复制到另一个数据集

2024-10-06 12:21:35 发布

您现在位置:Python中文网/ 问答频道 /正文

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


Tags: 数据nameid原始数据date手动mergejohn
2条回答

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

如果您正确地将id设置为originalother上的索引,Pandas的DataFrame.update可以做到这一点:

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

相关问题 更多 >