简体   繁体   English

在 Pandas 中按级别选择 MultiIndex 行

[英]Select MultiIndex rows by level, in Pandas

How can I select rows from a MultiIndex DataFrame that have more than 1 level?如何从具有超过 1 个级别的 MultiIndex DataFrame 中选择行? For example, given the following DataFrame:例如,给定以下 DataFrame:

           col
L1  L2     
a   1      5624
    2      1656
    3      265677
    4      3755
b   5      47
    6      85544
c   7      97656
d   8      12774
e   9      111
    10     9478

I would like to end up with a DataFrame that looks like:我想最终得到一个如下所示的 DataFrame:

         col
L1  L2     
a   1      5624
    2      1656
    3      265677
    4      3755
b   5      47
    6      85544
e   9      111
    10     9478

检查transform count

out = df[df.groupby(level=0)['col'].transform('count').values>1]

If you only want to consider the first level:如果只想考虑第一级:

df[df.index.get_level_values('L1').duplicated(keep=False)]
# or
df[df.index.get_level_values(0).duplicated(keep=False)]

If you want to consider all levels:如果要考虑所有级别:

df[df.index.to_frame().apply(pd.Series.duplicated, keep=False).any(1)]

output:输出:

          col
L1 L2        
a  1     5624
   2     1656
   3   265677
   4     3755
b  5       47
   6    85544
e  9      111
   10    9478

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM