繁体   English   中英

如果多列包含特定值,则删除 pandas dataframe 中的一行

[英]Remove a row in pandas dataframe if multiple columns contains specific value

我试图寻找这个问题的答案,但没有找到任何适合我的东西。 我想删除某些列包含特定值的行。 就我而言,我想删除该行中以“user”开头的每一列都包含值“pass”的行。 例如,如果我有以下 dataframe:

idx   start   end  user1   user2 
0     1       3    pass     pass   
1     4       5   burger   burger 
2     6       7   nuggets    cola 
3     10     15     pass    burger

我想删除第 0 行,但不是第 3 行,因为只有一列包含值“pass”。 将不胜感激任何帮助!

更新:用户列的名称和数量可能会增加,例如可能有 user1、user2、user3 等。

尝试这个:

df = df[~df.filter(like='user').apply(set, axis=1).eq({'pass'})]

您可以使用条件对 DataFrame 进行切片。

df[(df['user1'] != 'pass') & (df['user2'] != 'pass')]

如果你想让它成为新的df,只需使用:

df = df[(df['user1'] != 'pass') & (df['user2'] != 'pass')]
df = df.drop((df.loc[(df['user1'] == 'pass') && df['user2'] == 'pass']).index)
x = np.array([[0,1,2], [3,2,5], [6,2,9], ['pass', 'pass', 1], [1, 2, 'pass']])

df = pd.DataFrame(x, columns=['one', 'two', 'three'])
display(df)

在此处输入图像描述

df[(df['one'] != 'pass') & (df['two'] != 'pass')]

在此处输入图像描述

如您所见,您可以在 Pandas 中为您的索引传递多个条件。

暂无
暂无

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

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