我正在尝试在数据框的所有列中查找一个字符串。
import pandas as pd
df = pd.DataFrame([['a', 'b'], ['c', 'd'], ['e', 'a']], columns=["A", "B"])
for col in df:
df[col].str.contains('a')
0 True
1 False
2 False
Name: A, dtype: bool
0 False
1 False
2 True
Name: B, dtype: bool
但是,上面的代码只返回 bool 值,并没有返回我想要的格式(以表格形式显示行和列),这可以在特定列中搜索时实现:
df[df.A == 'a']
A B
0 a b
有人能帮忙吗?
最佳答案
创建 bool 值 DataFrame
并通过 DataFrame.any
检查每行至少一个 True
并按 boolean indexing
过滤:
df = df[df.eq('a').any(axis=1)]
print (df)
A B
0 a b
2 e a
详细信息:
print (df.eq('a'))
A B
0 True False
1 False False
2 False True
print(df.eq('a').any(axis=1))
0 True
1 False
2 True
dtype: bool
如果要检查 substring
使用 str.contains
对于 boolean DataFrame
:
df = pd.DataFrame([['ad', 'b'], ['c', 'd'], ['e', 'asw']], columns=["A", "B"])
print (df)
A B
0 ad b
1 c d
2 e asw
df = df[df.apply(lambda x: x.str.contains('a')).any(axis=1)]
或applymap
通过 in
进行元素明智的检查:
df = df[df.applymap(lambda x: 'a' in x).any(axis=1)]
print (df)
A B
0 ad b
2 e asw
关于python - 在Python中的数据框的所有列中搜索字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48851749/