为了账号安全,请及时绑定邮箱和手机立即绑定

大熊猫:在多列上合并(合并)两个数据框

大熊猫:在多列上合并(合并)两个数据框

动漫人物 2019-11-25 13:59:31
我正在尝试使用两列加入两个熊猫数据框:new_df = pd.merge(A_df, B_df,  how='left', left_on='[A_c1,c2]', right_on = '[B_c1,c2]')但出现以下错误:pandas/index.pyx in pandas.index.IndexEngine.get_loc (pandas/index.c:4164)()pandas/index.pyx in pandas.index.IndexEngine.get_loc (pandas/index.c:4028)()pandas/src/hashtable_class_helper.pxi in pandas.hashtable.PyObjectHashTable.get_item (pandas/hashtable.c:13166)()pandas/src/hashtable_class_helper.pxi in pandas.hashtable.PyObjectHashTable.get_item (pandas/hashtable.c:13120)()KeyError: '[B_1, c2]'任何想法应该是正确的方法吗?谢谢!
查看完整描述

3 回答

?
牧羊人nacy

TA贡献1862条经验 获得超7个赞

这里的问题是,通过使用撇号,您可以将要传递的值设置为字符串,而实际上,正如文档中的@Shijo所述,该函数需要的是标签或列表,而不是字符串!如果列表包含为左和右数据帧传递的列的每个名称,则每个列名称必须分别在撇号内。根据上述内容,我们可以理解为什么这是不正确的:


new_df = pd.merge(A_df, B_df,  how='left', left_on='[A_c1,c2]', right_on = '[B_c1,c2]')

这是使用函数的正确方法:


new_df = pd.merge(A_df, B_df,  how='left', left_on=['A_c1','c2'], right_on = ['B_c1','c2'])


查看完整回答
反对 回复 2019-11-25
?
互换的青春

TA贡献1797条经验 获得超6个赞

另一种方法是: new_df = A_df.merge(B_df, left_on=['A_c1','c2'], right_on = ['B_c1','c2'], how='left')


查看完整回答
反对 回复 2019-11-25
  • 3 回答
  • 0 关注
  • 428 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信