我有两个数据帧(df1,df2):
df1:
col1 col2 col3 col4
A 1 2 3 4
B 1 2 3 4
C 1 2 3 4
D 1 2 3 4
df2:
col1 col2 col3 col4
A 2 4 6 8
B 2 4 6 8
C 2 4 6 8
D 2 4 6 8
我想实现这一目标:
new_df:`
col1 col2 col3 col4
df1 df2 df1 df2 df1 df2 df1 df2
A 1 2 2 4 3 6 4 8
B 1 2 2 4 3 6 4 8
C 1 2 2 4 3 6 4 8
D 1 2 2 4 3 6 4 8
我尝试了一些多索引方法,但无法获得所需的输出。 我该怎么办?
答案 0 :(得分:2)
pd.concat
(包含键),swaplevel
(包含sort_index
上的axis=1
:
l = ['df1','df2']
out = pd.concat((df1,df2),axis=1,keys=l).swaplevel(axis=1).sort_index(axis=1)
col1 col2 col3 col4
df1 df2 df1 df2 df1 df2 df1 df2
A 1 2 2 4 3 6 4 8
B 1 2 2 4 3 6 4 8
C 1 2 2 4 3 6 4 8
D 1 2 2 4 3 6 4 8
另一种可能的方法是df.join
并通过拆分列创建多索引,然后对索引进行排序,但第一个索引更干净;
out1 = df1.join(df2,lsuffix='_df1',rsuffix='_df2')
out1.columns = out1.columns.str.split('_',expand=True)
out1 = out1.sort_index(axis=1)