基于项目数的多索引切片

2024-04-26 22:34:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个多索引系列,如果级别1有多个项,我将尝试打印级别0的所有值。例如,以以下系列为例:

   match
0  0         apple
1  0        orange
   1          pear
   2        banana

我不在乎苹果,因为它是0级索引0的唯一条目。因为0级索引1有三个条目,我想把它们全部打印出来。我得到的最好的是print(fruit.loc[(fruit.index.get_level_values('match') != 0)]),但那只会给我梨和香蕉,而不是橘子。似乎我应该能够以某种方式获得0级索引,并将它们传递给.loc(),但我没有任何运气

创建上面的系列:

arrays = [[0, 1, 1, 1], [0, 0, 1, 2]]
multi = pd.MultiIndex.from_arrays(arrays, names=('', 'match'))

fruit = pd.Series(data=('apple', 'orange', 'pear', 'banana'), index=multi)

Tags: 苹果appleindexmatch条目级别multiloc
1条回答
网友
1楼 · 发布于 2024-04-26 22:34:05

您可以使用级别0上的groupby和带有counttransform来创建掩码,以发现级别1有多个项

m = fruit.groupby(level=0).transform('count') > 1
fruit[m]

Out[421]:
   match
1  0        orange
   1          pear
   2        banana
dtype: object

从@ALolz创建掩码m的另一种方法

m = fruit.index.get_level_values(0).duplicated(keep=False)

相关问题 更多 >