如何识别我的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)而不是字符串,我可以像这样生成一个布尔掩码:
>>> ~(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
如果可能的话,我不想迭代每一列和每行(我的实际数据比这个例子大得多)。感觉应该有一种简单而有效的方式。
我该怎么做?
答案 0 :(得分:2)
基础数组数据的一种方法 -
df.columns[(df.values=='foo').any(0)].tolist()
示例运行 -
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)
答案 1 :(得分:1)
选项1 df.values
~(df.where(df.values=='foo')).isnull().all()
Out[91]:
A False
B True
C False
D True
dtype: bool
选项2 isin
~(df.where(df.isin(['foo']))).isnull().all()
Out[94]:
A False
B True
C False
D True
dtype: bool
答案 2 :(得分:0)
不幸的是,它不会通过你给出的语法索引str。它必须作为一系列类型字符串运行,以将其与字符串进行比较,除非我遗漏了一些东西。
试试这个
import { TermsOfUsePage } from '../pages/terms-of-use/terms-of-use';
import { PrivacyPolicyPage } from '../pages/privacy-policy/privacy-policy';
// rest of your code