根据 Pandas 中的多索引条件/字符删除行

Dropping rows based on multi-index condition / character in Pandas

下面的数据框是一个具有分层列 (df) 的多索引数据框:

                   EMG                                     Biofeedback    
Time     ID  
                   delta theta alpha beta high beta gamma  HeartRateVariabilty GSR     
20170101 PD102       4     5     8    3         0     9                1        2 
20170102 PD102       5     7     8    4         6     5                2        3       
20170101 SS104-1     3     4     4    5         2     4                8        2
20170101 SS104       3     4     3    4         2     4                8        2

如何删除索引中所有包含“-”(破折号)的行,即删除 SS104-1?

您可以使用 boolean indexing with boolean mask created byIndex.get_level_values with contains,最后按 ~:

反转它
print (~df.index.get_level_values('ID').str.contains('-'))
[ True  True False  True]

df1 = df[~df.index.get_level_values('ID').str.contains('-')]
print (df1)
                 EMG                                          Biofeedback    
               delta theta alpha beta high beta gamma HeartRateVariabilty GSR
Time     ID                                                                  
20170101 PD102     4     5     8    3         0     9                   1   2
20170102 PD102     5     7     8    4         6     5                   2   3
20170101 SS104     3     4     3    4         2     4                   8   2