如何在没有"pandas.merge"的情况下将某些列上的几个pandas数据帧合并在一起? [英] How can I merge together several pandas dataframes on a certain column without 'pandas.merge'?
本文介绍了如何在没有"pandas.merge"的情况下将某些列上的几个pandas数据帧合并在一起?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我经常发现自己有几种以下形式的熊猫数据框:
I often find myself with several pandas dataframes in the following form:
import pandas as pd
df1 = pd.read_table('filename1.dat')
df2 = pd.read_table('filename2.dat')
df3 = pd.read_table('filename3.dat')
print(df1)
columnA first_values
name1 342
name2 822
name3 121
name4 3434
print(df2)
columnA second_values
name1 8
name2 1
name3 1
name4 2
print(df3)
columnA third_values
name1 910
name2 301
name3 132
name4 299
我想将'columnA'上的每个数据框合并在一起,给出
I would like to merge together each of these dataframes on 'columnA', giving
columnA first_values second_values third_values
name1 342 8 910
name2 822 1 301
name3 121 1 132
name4 3434 2 299
我通常会采取这种手段:
I normally resort to this hack:
merged1 = df1.merge(df2, on='columnA')
然后
merged2 = df3.merge(merged1, on='columnA')
但是,这并不适合许多数据帧.正确的方法是什么?
But this doesn't scale for many dataframes. What is the correct way to do this?
推荐答案
您可以将columnA设置为索引和concat(末尾重置索引):
You can set columnA as the index and concat (reset index at the end):
dfs = [df1, df2, df3]
pd.concat([df.set_index('columnA') for df in dfs], axis=1).reset_index()
Out:
columnA first_values second_values third_values
0 name1 342 8 910
1 name2 822 1 301
2 name3 121 1 132
3 name4 3434 2 299
这篇关于如何在没有"pandas.merge"的情况下将某些列上的几个pandas数据帧合并在一起?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文