数据框与两个不同列中的匹配键合并
Dataframe Merge with match key in two different columns
我想 merge
两个 DataFrame,但是第二个 DataFrame 中的匹配键分散在两个不同的列中。合并两个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)
解决这个问题的最简单方法是融化数据框并合并数据框
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
如果两个数据帧都具有 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
我想 merge
两个 DataFrame,但是第二个 DataFrame 中的匹配键分散在两个不同的列中。合并两个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)
解决这个问题的最简单方法是融化数据框并合并数据框
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
如果两个数据帧都具有 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