我有两个具有(不一定)相同索引和列名的 Pandas DataFrame。
>>> df_L = pd.DataFrame({'X': [1, 3],
'Y': [5, 7]})
>>> df_R = pd.DataFrame({'X': [2, 4],
'Y': [6, 8]})
Run Code Online (Sandbox Code Playgroud)
我可以将它们连接在一起并分配后缀。
>>> df_L.join(df_R, lsuffix='_L', rsuffix='_R')
X_L Y_L X_R Y_R
0 1 5 2 6
1 3 7 4 8
Run Code Online (Sandbox Code Playgroud)
但我想要的是在“X”和“Y”下制作“L”和“R”子列。
所需的 DataFrame 如下所示:
>>> pd.DataFrame(columns=pd.MultiIndex.from_product([['X', 'Y'], ['L', 'R']]),
data=[[1, 5, 2, 6],
[3, 7, 4, 8]])
X Y
L R L R
0 1 5 2 6
1 3 7 4 8
Run Code Online (Sandbox Code Playgroud)
有没有办法可以组合两个原始数据帧来获得所需的数据帧?
您可以沿第一个轴pd.concat与keys参数一起使用:
df = pd.concat([df_L, df_R], keys=['L','R'],axis=1).swaplevel(0,1,axis=1).sort_index(level=0, axis=1)
>>> df
X Y
L R L R
0 1 2 5 6
1 3 4 7 8
Run Code Online (Sandbox Code Playgroud)