python – 使用pandas连接两个数据帧中的不同列(并附加类似的列)
发布时间:2020-12-20 12:35:26 所属栏目:Python 来源:网络整理
导读:我的问题与 Pandas Merge – How to avoid duplicating columns密切相关但不完全相同. 我想连接三个数据帧中不同的列.数据框有一个列id,有些列是相同的:Ex. DF1 id place name qty unit A 1 NY Tom 2 10 a2 TK Ron 3 15 a3 Lon Don 5 90 a4 Hk Sam 4 49 a D
我的问题与
Pandas Merge – How to avoid duplicating columns密切相关但不完全相同.
我想连接三个数据帧中不同的列.数据框有一个列id,有些列是相同的:Ex. DF1 id place name qty unit A 1 NY Tom 2 10 a 2 TK Ron 3 15 a 3 Lon Don 5 90 a 4 Hk Sam 4 49 a DF2 id place name qty unit B 1 NY Tom 2 10 b 2 TK Ron 3 15 b 3 Lon Don 5 90 b 4 Hk Sam 4 49 b DF3 id place name qty unit C D 1 NY Tom 2 10 c d 2 TK Ron 3 15 c d 3 Lon Don 5 90 c d 4 Hk Sam 4 49 c d 结果: id place name qty unit A B C D 1 NY Tom 2 10 a b c d 2 TK Ron 3 15 a b c d 3 Lon Don 5 90 a b c d 4 Hk Sam 4 49 a b c d 列的位置,名称,数量和单位将始终是三个数据框的一部分,不同的列的名称可能会有所不同(在我的示例中为A,B,C,D).三个数据帧具有相同的行数. 我试过了: cols_to_use = df1.columns - df2.columns dfNew = merge(df,df2[cols_to_use],left_index=True,right_index=True,how='outer') 问题是我获得了比预期更多的行,并且在结果数据帧中重命名了列(使用concat时). 解决方法
使用functools中的reduce
from functools import reduce reduce(lambda left,right: pd.merge(left,right),[df1,df2,df3]) Out[725]: id place name qty unit A B C D 0 1 NY Tom 2 10 a b c d 1 2 TK Ron 3 15 a b c d 2 3 Lon Don 5 90 a b c d 3 4 Hk Sam 4 49 a b c d (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |