我正在尝试将两个面板与重复的Items
(但不同的major_axes
)连接在一起,而不必实际复制项目......
说明我的意思:
# create data
import pandas as pd
df1 = pd.DataFrame({'A' : [1, 2, 3], 'B' : [2, 5, 6]}, index={0, 1, 2})
df2 = pd.DataFrame({'A' : [1, 2, 3], 'B' : [2, 5, 6]}, index={3, 4, 5})
df3 = pd.DataFrame({'A' : [5, 2, 3], 'B' : [2, 5, 6]}, index={6, 7, 8})
df4 = pd.DataFrame({'A' : [6, 2, 3], 'B' : [2, 5, 6]}, index={9, 10, 11})
pan1 = pd.Panel({'X' : df1, 'Y': df2})
pan2 = pd.Panel({'X' : df3, 'Y': df4})
# concat these two panels above
pan3 = pd.concat([pan1, pan2])
pan3
Output:
<class 'pandas.core.panel.Panel'>
Dimensions: 4 (items) x 12 (major_axis) x 2 (minor_axis)
Items axis: X to Y
Major_axis axis: 0 to 11
Minor_axis axis: A to B
请注意Items
的{{1}}轴长度为4,而pan3
和pan1
的长度为pan2
的轴为2。
查看Items
&#39; pan3
,我在下面的框架中获得了重复的列。 这是我的问题。:
minor_axis
我真正希望看到的内容可以通过更复杂的方式复制如下...(截图中不再有重复的列):
pan3.loc[:, :, 'B']
这可以通过df5 = pd.concat([df1, df3])
df6 = pd.concat([df2, df4])
pan4 = pd.Panel({'X':df5, 'Y':df6})
pan4.loc[:, :, 'B']
完成吗?
答案 0 :(得分:2)
您只需指定连接轴。
In [12]: pd.concat([pan1, pan2],axis=1)
Out[12]:
<class 'pandas.core.panel.Panel'>
Dimensions: 2 (items) x 12 (major_axis) x 2 (minor_axis)
Items axis: X to Y
Major_axis axis: 0 to 11
Minor_axis axis: A to B
In [13]: pd.concat([pan1, pan2],axis=1).loc[:,:,'B']
Out[13]:
X Y
0 2 NaN
1 5 NaN
2 6 NaN
3 NaN 2
4 NaN 5
5 NaN 6
6 5 NaN
7 6 NaN
8 2 NaN
9 NaN 2
10 NaN 5
11 NaN 6