根据 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
下面的数据框是一个具有分层列 (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