Python 当存在特定匹配时,将一个数据帧的克隆添加到另一个数据帧

Python 当存在特定匹配时,将一个数据帧的克隆添加到另一个数据帧,python,pandas,Python,Pandas,我有一个名为df1的数据帧,如下所示: import pandas as pd id_1 = [1,2,3,4,5,6,7] df_1 = pd.DataFrame(zip(id_1, data_1), columns =['id', 'data']) 现在是另一个名为df2的数据帧: id_2 = [1,3,5,7] df_2 = pd.DataFrame(id_2, columns = ['id']) 我想知道的是,每当id中有匹配项时,如何将data的值从df1添加到df2 因此

我有一个名为
df1
的数据帧,如下所示:

import pandas as pd

id_1 = [1,2,3,4,5,6,7]
df_1 = pd.DataFrame(zip(id_1, data_1), columns =['id', 'data'])

现在是另一个名为
df2
的数据帧:

id_2 = [1,3,5,7]
df_2 = pd.DataFrame(id_2, columns = ['id'])

我想知道的是,每当
id
中有匹配项时,如何将
data
的值从
df1
添加到
df2

因此,基本上期望的结果是:


您可以使用
map()
执行此操作

这里,基于
dfu 1映射dfu 2的每个
id
。设置索引('id')['data']
序列,并使用
dfu 2['data']设置值

使用合并

 pd.merge(df_2,df_1, how='inner')
在这里,执行简单的内部连接
df_1
df_2
您可以或数据帧:

df_2.merge(df_1, on='id')

示例

>>> df_1 = pd.DataFrame(zip(id_1, data_1), columns =['id', 'data'])
   id  data
0   1   0.0
1   2   0.1
2   3   0.2
3   4   0.3
4   5   0.4
5   6   0.5
6   7   0.6

>>> df_2 = pd.DataFrame(id_2, columns = ['id'])
   id
0   1
1   3
2   5
3   7

>>> df_2.merge(df_1 , on='id', how='inner') #merging the dataframes
   id  data
0   1   0.0
1   3   0.2
2   5   0.4
3   7   0.6

>>> df_2.join(df_1.set_index('id') , on='id', how='inner')
   id  data
0   1   0.0
1   3   0.2
2   5   0.4
3   7   0.6

您可以使用dataframes方法
merge
加入数据:

df_2 = df_2.merge(df_1, how='left', on='id')

映射
词典一起使用

dd = {k:v for k, v in zip(df_1['id'], df_1['data'])}
df_2['data'] = df_2['id'].map(dd)
df_2
输出:

   id  data
0   1   0.1
1   3   0.3
2   5   0.5
3   7   0.7
时间:

dd = {k:v for k, v in zip(df_1['id'], df_1['data'])}
df_2['data'] = df_2['id'].map(dd)
df_2
   id  data
0   1   0.1
1   3   0.3
2   5   0.5
3   7   0.7