我最近尝试将两个数据框连接到一个面板中,我尝试将pd.concat
用于axis=2
考虑数据框df1
和df2
df1 = pd.DataFrame(np.random.rand(3, 3), list('abc'), list('def'))
df2 = pd.DataFrame(np.random.rand(3, 3), list('abc'), list('def'))
然后我试了
pd.concat([df1, df2], axis=2)
这与我使用axis=1
的情况相同。也许pandas只是检查axis
是否评估为True
。我们试试
pd.concat([df1, df2], axis='This Has To Break...Right?')
都能跟得上!没有休息。好的,那么如何在axis=2
我可以
pd.Panel(np.stack([df1, df2])).to_frame()
但这会忽略指数,如果它们不同则不会对齐它们。
我想要一些看起来像
的东西panel
<class 'pandas.core.panel.Panel'>
Dimensions: 2 (items) x 3 (major_axis) x 3 (minor_axis)
Items axis: 0 to 1
Major_axis axis: a to c
Minor_axis axis: d to f
panel.to_frame()
答案 0 :(得分:1)
不确定您在寻找什么,但是:
pd.Panel(np.stack([df1, df2]), major_axis=df1.index, minor_axis=df2.columns ).to_frame()
0 1
major minor
a d 0.630339 0.020119
e 0.736730 0.874750
f 0.530833 0.637081
b d 0.759991 0.499921
e 0.651995 0.310123
f 0.005724 0.759712
c d 0.510702 0.067634
e 0.367993 0.893205
f 0.030383 0.591366
data = {0 : df1, 1 : df2}
pd.Panel(data)
<class 'pandas.core.panel.Panel'>
Dimensions: 2 (items) x 3 (major_axis) x 3 (minor_axis)
Items axis: 0 to 1
Major_axis axis: a to c
Minor_axis axis: d to f
data = {0 : df1, 1 : df2}
pd.Panel(data).to_frame()
0 1
major minor
a d 0.630339 0.020119
e 0.736730 0.874750
f 0.530833 0.637081
b d 0.759991 0.499921
e 0.651995 0.310123
f 0.005724 0.759712
c d 0.510702 0.067634
e 0.367993 0.893205
f 0.030383 0.591366
答案 1 :(得分:0)