python - 在 pandas DataFrame 中查找字符串值的索引

标签 python pandas

如何确定我的 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']})

我想在这里找到BD

我可以搜索数字:

如果我正在寻找一个数字(例如 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/

相关文章:

python - 添加多索引列的任何直接方法?

python - Pandas:删除数据框中具有 NaN 阈值的前导行

python - 如何根据另一个模型的 "x"字段设置 "y"字段的值? Odoo-10

python - 如何使用biopython提取和修剪fasta序列

python - Python 中的 file_put_contents 和 iconv 等价物?

python - Python 中每个用户的排名

python - 使用 langdetect 计算 pandas 数据框中的语言频率

python - 如何在 pyspark 2.3 中的二元问题(BinaryClassificationEvaluator)中为 CrossValidator 评估器使用 f1-score

python - 导入整个 python 模块不允许使用子模块

python - 如何通过网络驱动器快速获取 .csv 文件的最后一行?