从面板中的每个框架中提取列

时间:2015-12-22 19:23:25

标签: python pandas panel

我有一个包含一些数据框的Panel数据。所有这些都有一个名为' N0'的列。我想要一个包含每个面板N0均值的数组。我设法用这个:

[np.mean(data.minor_xs('N0')[g]) for g in data]

但它看起来太麻烦了。是不是有更清洁的方式来提取N0柱,比如数据[' N0']?

1 个答案:

答案 0 :(得分:1)

您可以使用pd.Panel.apply (see docs),如随机样本数据所示:

df1 = pd.DataFrame(np.random.randn(4, 2), columns=['A', 'B'])
df2 = pd.DataFrame(np.random.randn(4, 2), columns=['A', 'B'])
data = {'Item1': df1, 'Item2': df2}

df = pd.Panel(data)

<class 'pandas.core.panel.Panel'>
Dimensions: 2 (items) x 4 (major_axis) x 2 (minor_axis)
Items axis: Item1 to Item2
Major_axis axis: 0 to 3
Minor_axis axis: A to B

,如DataFrame,如下所示:

                Item1     Item2
major minor                    
0     A     -0.572396  0.515488
      B      0.796982  0.726253
1     A      0.345817 -0.330810
      B     -2.516973  1.833602
2     A     -2.140583 -1.050717
      B      1.302233 -1.391122
3     A     -0.088435 -0.041199
      B      0.521575  0.618990

使用.apply()如下meancolumn DataFrame提供了B,该示例说明了如何仅选择df.apply(np.mean, axis='major').loc['B'] Item1 0.025954 Item2 0.446931 Name: B, dtype: float64

MultiIndex

使用DataFrame $('.bxslider').bxSlider({ minSlides: 2, maxSlides: 2, slideWidth: 360, slideMargin: 10 }); 可能更简单,因为更好地记录,因为它似乎是更常见的用例。