我有一个从pandas(DataFrame对象)创建的数据透视表。
目前,我有多个索引,我希望能够过滤其中一些索引。为了澄清这一点,透视表就是这样的。
有1000多个。我想要做的是获取opt_step为1的所有实例,cf为pv_area_cost1a,优化为MANHATTAN。最终目标是能够为某些实例绘制迭代与成本的关系图。
数据透视表名为pt。我已经尝试了pt.index.get_level_values [' pv_area_cost1a']并且我已经在高级索引中阅读了整个页面但无济于事。提前致谢。
答案 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
对我来说,切片此类数据框的最简单方法是使用.loc
和IndexSlice
的组合。因此,要将上述df切片为i2=3
和i3=5
:
>>> df.loc[pd.IndexSlice[:, 3, 5], :]
v1 v2
i1 i2 i3
1 3 5 10 20
:
内的IndexSlice
表示选择i1
的所有行。 :
函数中的最后一个loc
表示选择数据框中的所有列(v1
和v2
)。