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