【发布时间】:2017-11-01 15:33:41
【问题描述】:
我有两个形状相同的 pandas 数据框:
index = range(5)
columns = ['A', 'B', 'C']
left = pd.DataFrame(np.random.randint(1,10, size=(5,3)), index=index, columns=columns)
right = pd.DataFrame(np.random.randint(1,10, size=(5,3)), index=index, columns=columns)
即
left
Out[127]:
A B C
0 3 4 7
1 5 8 4
2 8 8 7
3 1 3 5
4 3 5 8
和
right
Out[129]:
A B C
0 2 8 2
1 3 6 5
2 4 6 4
3 8 4 2
4 4 2 9
现在我想将它们组合成一个具有相同索引和两级列的单个数据框。顶部是通用列名,底部是原始数据框名称:
combined = pd.DataFrame(np.nan, index=index, columns=pd.MultiIndex.from_tuples([('A', 'left'), ('A', 'right'), ('B', 'left'), ('B', 'right'), ('C', 'left'), ('C', 'right')]))
for column in combined.columns:
if column[1] == 'left':
combined[column] = left[column[0]]
elif column[1] == 'right':
combined[column] = right[column[0]]
combined
Out[138]:
A B C
left right left right left right
0 3 2 4 8 7 2
1 5 3 8 6 4 5
2 8 4 8 6 7 4
3 1 8 3 4 5 2
4 3 4 5 2 8 9
由于我正在处理的数据帧非常庞大,有没有更快或更优雅的方法来实现这一点?
提前致谢!
【问题讨论】:
标签: python pandas dataframe merge