我想删除所有包含所需字符串的行,
假设我有以下数据框:
A B C
1 a x
w g n
3 l p
j p v
我想删除所有包含字符串 p
的行。我已经搜索过它,但大部分答案都是基于列名,在我的情况下,我不会知道它可以出现在任何列中的列。
输出数据框应该是
A B C
1 a x
w g n
最佳答案
用于过滤字符串:
df = df[(df != 'p').all(axis=1)]
比较不等于:
print ((df != 'p'))
A B C
0 True True True
1 True True True
2 True True False
3 True False True
并测试每行的所有 True
:
print ((df != 'p').all(axis=1))
0 True
1 True
2 False
3 False
dtype: bool
或者:
df = df[~(df == 'p').any(axis=1)]
相等测试:
print ((df == 'p'))
A B C
0 False False False
1 False False False
2 False False True
3 False True False
每行至少测试一个True
:
print ((df == 'p').any(axis=1))
0 False
1 False
2 True
3 True
dtype: bool
反转 bool 掩码:
print (~(df == 'p').any(axis=1))
0 True
1 True
2 False
3 False
dtype: bool
要过滤子字符串,请使用 contains
使用应用
:
df = df[~df.apply(lambda x: x.astype(str).str.contains('p')).any(axis=1)]
或者:
df = df[~df.stack().astype(str).str.contains('p').unstack().any(axis=1)]
print (df)
A B C
0 1 a x
1 w g n
关于python - Pandas 如何删除包含所需字符串的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51168105/