我想连接三个数据帧中不同的列.数据框有一个列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中的reducefrom 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连接两个数据帧中的不同列(并附加类似的列)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)