如何通过pandas pivot table

时间:2015-10-07 22:34:16

标签: python pandas

我有一个从pandas(DataFrame对象)创建的数据透视表。

目前,我有多个索引,我希望能够过滤其中一些索引。为了澄清这一点,透视表就是这样的。

enter image description here

有1000多个。我想要做的是获取opt_step为1的所有实例,cf为pv_area_cost1a,优化为MANHATTAN。最终目标是能够为某些实例绘制迭代与成本的关系图。

数据透视表名为pt。我已经尝试了pt.index.get_level_values [' pv_area_cost1a']并且我已经在高级索引中阅读了整个页面但无济于事。提前致谢。

1 个答案:

答案 0 :(得分:1)

首先,创建一个多索引数据框:

df = pd.DataFrame({'i1': [1, 1, 1, 1], 'i2': [2, 2, 3, 3], 'i3': [4, 5, 4, 5], 'v1': [10] * 4, 'v2': [20] * 4}).set_index(['i1', 'i2', 'i3'])
>>> df
          v1  v2
i1 i2 i3        
1  2  4   10  20
      5   10  20
   3  4   10  20
      5   10  20

对我来说,切片此类数据框的最简单方法是使用.locIndexSlice的组合。因此,要将上述df切片为i2=3i3=5

>>> df.loc[pd.IndexSlice[:, 3, 5], :]

          v1  v2
i1 i2 i3        
1  3  5   10  20

:内的IndexSlice表示选择i1的所有行。 :函数中的最后一个loc表示选择数据框中的所有列(v1v2)。