python – 使用pandas连接两个数据帧中的不同列(并附加类似的列)

python – 使用pandas连接两个数据帧中的不同列(并附加类似的列),第1张

概述我的问题与 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 我的问题与 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

DF2

ID place name qty unit B 1 NY    Tom   2  10   b2 TK    Ron   3  15   b3 Lon   Don   5  90   b4 Hk    Sam   4  49   b

DF3

ID place name qty unit C D1 NY    Tom   2  10   c d2 TK    Ron   3  15   c d3 Lon   Don   5  90   c d4 Hk    Sam   4  49   c d

结果:

ID place name qty unit A B C D1 NY    Tom   2  10   a b c d2 TK    Ron   3  15   a b c d3 Lon   Don   5  90   a b c d4 Hk    Sam   4  49   a b c d

列的位置,名称,数量和单位将始终是三个数据框的一部分,不同的列的名称可能会有所不同(在我的示例中为A,B,C,D).三个数据帧具有相同的行数.

我试过了:

cols_to_use = df1.columns - df2.columnsdfNew = merge(df,df2[cols_to_use],left_index=True,right_index=True,how='outer')

问题是我获得了比预期更多的行,并且在结果数据帧中重命名了列(使用concat时).

解决方法 使用functools中的reduce

from functools import reducereduce(lambda left,right: pd.merge(left,right),[df1,df2,df3])Out[725]:    ID place name  qty  unit  A  B  C  D0   1    NY  Tom    2    10  a  b  c  d1   2    TK  Ron    3    15  a  b  c  d2   3   Lon  Don    5    90  a  b  c  d3   4    Hk  Sam    4    49  a  b  c  d
总结

以上是内存溢出为你收集整理的python – 使用pandas连接两个数据帧中的不同列(并附加类似的列)全部内容,希望文章能够帮你解决python – 使用pandas连接两个数据帧中的不同列(并附加类似的列)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1195063.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存