我正尝试仅使用多索引DataFrame中的一个索引创建新的DataFrame。
A B C
first second
bar one 0.895717 0.410835 -1.413681
two 0.805244 0.813850 1.607920
baz one -1.206412 0.132003 1.024180
two 2.565646 -0.827317 0.569605
foo one 1.431256 -0.076467 0.875906
two 1.340309 -1.187678 -2.211372
qux one -1.170299 1.130127 0.974466
two -0.226169 -1.436737 -2.006747
理想情况下,我希望这样:
In: df.ix[level="first"]
以及:
Out:
A B C
first
bar 0.895717 0.410835 -1.413681
0.805244 0.813850 1.607920
baz -1.206412 0.132003 1.024180
2.565646 -0.827317 0.569605
foo 1.431256 -0.076467 0.875906
1.340309 -1.187678 -2.211372
qux -1.170299 1.130127 0.974466
-0.226169 -1.436737 -2.006747
`
实际上,我想删除除级别first
之外的多索引的所有其他索引,有简单的方法吗?
4条答案
按热度按时间yebdmbv41#
一种方法是简单地将
df.index
重新绑定到MultiIndex的所需级别,您可以通过指定要保留的标签名称来完成此操作:或使用级别的整数值:
MultiIndex的所有其他级别将在此处消失。
yruzcnhs2#
该解决方案相当新,使用
df.xs
函数作为也可以处理多个索引,如
示例的设置如下所示
3ks5zfa03#
我使用get_level_values(0)获取多索引组中的第一级索引,通过构建包含聚合值和编码值的描述字典值的 Dataframe 。
ghg1uchk4#
或者你可以使用
pandas.DataFrame.droplevel
方法,这个例子的唯一缺点是你的索引值不再是唯一的: