【发布时间】:2015-10-22 23:39:46
【问题描述】:
我遇到了以下问题。我想合并多个列上的两个数据框(准确地说是 11 个)。令人惊讶的是,通常的方法不起作用。示例数据框如下: df1:
c1 c2 c3 c4 c5 c6 event_count
1 2 a ff 0 1 5
1 2 b fg 1 3 6
1 2 c hg 2 4 20
1 2 d gf 0 1 7
1 2 e fg 1 4 1
df2:
c1 c2 c3 c4 c5 c6 event_type event_price
1 2 a ff 0 1 a 20
1 2 b fg 1 3 a 20
1 2 c hg 2 4 b 30
1 2 d gf 0 1 b 40
1 2 e fg 1 4 b 50
我试过了
result = pd.merge(df1, df2, how='outer', on = ['c1','c2','c3','c4','c5','c6'])
这在技术上也应该有效:
结果 = pd.merge(df1, df2, how='outer')
但我明白了:
c1 c2 c3 c4 c5 c6 event_count event_type event_price
1 2 a ff 0 1 5
1 2 b fg 1 3 6
1 2 c hg 2 4 20
1 2 d gf 0 1 7
1 2 e fg 1 4 1
1 2 a ff 0 1 a 20
1 2 b fg 1 3 a 20
1 2 c hg 2 4 b 30
1 2 d gf 0 1 b 40
1 2 e fg 1 4 b 50
当我想得到这个时:
c1 c2 c3 c4 c5 c6 event_count event_type event_price
1 2 a ff 0 1 5 a 20
1 2 b fg 1 3 6 a 20
1 2 c hg 2 4 20 b 30
1 2 d gf 0 1 7 b 40
1 2 e fg 1 4 1 b 50
我也尝试过使用索引:
df1_index = df1.set_index(['c1', 'c2','c3'....]); df2_index =df2.set_index(['c1', 'c2','c3'....]); 结果 = pd.concat([df1_index, df2_index], axis=1);
但这给出了同样错误的结果。我确保两个表的 dtypes 也相同。我不确定还能尝试什么。有什么建议吗? 谢谢:)
【问题讨论】:
-
使用您的示例数据和代码可以正常工作,您确定没有其他问题
标签: python pandas merge dataframe multiple-columns