Pandas:如何连接两个面板而不重复Items轴(即像DataFrames中的列一样)?

时间:2016-01-07 10:30:58

标签: python pandas

我正在尝试将两个面板与重复的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,而pan3pan1的长度为pan2的轴为2。

查看Items&#39; pan3,我在下面的框架中获得了重复的列。 这是我的问题。

minor_axis

enter image description here

我真正希望看到的内容可以通过更复杂的方式复制如下...(截图中不再有重复的列):

pan3.loc[:, :, 'B']

enter image description here

这可以通过df5 = pd.concat([df1, df3]) df6 = pd.concat([df2, df4]) pan4 = pd.Panel({'X':df5, 'Y':df6}) pan4.loc[:, :, 'B'] 完成吗?

1 个答案:

答案 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