在两个不同列中使用匹配键合并数据帧

2024-04-27 09:40:52 发布

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

我想要merge两个数据帧,但是第二个数据帧中的匹配键分散在两个不同的列中。合并两个DF的最佳方式是什么

import pandas as pd

data1 = {'key': ['abc','efg', 'xyz', 'sdf']}
data2 = {'key1' : ['abc','sss','ggg','ccc'],
         'key2' : ['aaa','efg','xyz', 'sdf'],
         'msg' : ['happy','mad','smile','great']}

df1= pd.DataFrame(data1)
df2= pd.DataFrame(data2)

enter image description here


Tags: 数据importdataframepandasdfas方式merge
2条回答

如果两个数据帧都有一个关系,其中df1的行1对应于df2的行1,依此类推,那么您可以简单地在索引上合并

代码:

df = pd.merge(df1, df2, left_index=True, right_index=True)
print(df)

输出:

   key key1 key2    msg
0  abc  abc  aaa  happy
1  efg  sss  efg    mad
2  xyz  ggg  xyz  smile
3  sdf  ccc  sdf  great

修复此问题的最简单方法是融化数据帧并合并数据帧

data1 = {'key': ['abc','efg', 'xyz', 'sdf']}
data2 = {'key1' : ['abc','sss','ggg','ccc'],
         'key2' : ['aaa','efg','xyz', 'sdf'],
         'msg' : ['happy','mad','smile','great']}
data1 = pd.DataFrame(data1)
data2 = pd.DataFrame(data2).melt(id_vars='msg', value_name='key').drop('variable', axis=1)
df = data1.merge(data2, on='key')

df = 
    key msg
0   abc happy
1   efg mad
2   xyz smile
3   sdf great

相关问题 更多 >