如何确定我的 DataFrame 中的哪些列包含特定字符串 'foo'
?
示例数据框:
>>> import pandas as pd
>>> df = pd.DataFrame({'A':[10,20,42], 'B':['foo','bar','blah'],'C':[3,4,5], 'D':['some','foo','thing']})
我想在这里找到B
和D
。
我可以搜索数字:
如果我正在寻找一个数字(例如 42)而不是一个字符串,我可以像这样生成一个 bool 掩码:
>>> ~(df.where(df==42)).isnull().all()
A True
B False
C False
D False
dtype: bool
但不是字符串:
>>> ~(df.where(df=='foo')).isnull().all()
TypeError: Could not compare ['foo'] with block values
如果可能,我不想遍历每一列和每一行(我的实际数据比这个例子大得多)。感觉应该有一个简单高效的方法。
我该怎么做?
最佳答案
底层数组数据的一种方式-
df.columns[(df.values=='foo').any(0)].tolist()
sample 运行-
In [209]: df
Out[209]:
A B C D
0 10 foo 3 some
1 20 bar 4 foo
2 42 blah 5 thing
In [210]: df.columns[(df.values=='foo').any(0)].tolist()
Out[210]: ['B', 'D']
如果您只查找列掩码 -
In [205]: (df.values=='foo').any(0)
Out[205]: array([False, True, False, True], dtype=bool)
关于python - 在 pandas DataFrame 中查找字符串值的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46453275/