如何检查数据框中是否存在某个值

6

你好,我正在尝试获取包含特定单词的数据框的列名。

例如:我有一个数据框,

NA              good    employee
Not available   best    employer
not required    well    manager
not eligible    super   reportee

my_word=["well"]

如何检查数据框中是否存在“well”,以及包含“well”的列名。
提前感谢!

没有。 - jezrael
不,有时候会有多个 - Pyd
它应该是子字符串吗? - jezrael
是的,字符串列表 - Pyd
2个回答

9

使用 DataFrame.isin 来检查所有列,使用 DataFrame.any 检查每行至少有一个True

m = df.isin(my_word).any()
print (m)
0    False
1     True
2    False
dtype: bool

然后通过过滤获取列名:

cols = m.index[m].tolist()
print(cols)
[1]

数据:

print (df)
               0      1         2
0            NaN   good  employee
1  Not available   best  employer
2   not required   well   manager
3   not eligible  super  reportee

细节:

print (df.isin(my_word))
       0      1      2
0  False  False  False
1  False  False  False
2  False   True  False
3  False  False  False

print (df.isin(my_word).any())
0    False
1     True
2    False
dtype: bool

在将 get 转换为嵌套的 list 后,需要进行 展平操作

my_word=["well","manager"]

m = df.isin(my_word).any()
print (m)
0    False
1     True
2     True
dtype: bool

nested = df.loc[:,m].values.tolist()
flat_list = [item for sublist in nested for item in sublist]
print (flat_list)
['good', 'employee', 'best', 'employer', 'well', 'manager', 'super', 'reportee']

好的,如何将这些列值添加到my_word中,我们需要逐个追加还是有任何pandas方法可以添加? - Pyd
如果两者都是列表,只需使用 +,例如 my_word += colsmy_word = my_word + cols - jezrael
我可以使用for循环来完成,for item in cols: my_word+=df[item].values.tolist() 但如果我们有pandas的方法会更好 - Pyd
1
不,它适用于df中的所有数据。 - jezrael
1
很不幸,它不是数字。否则我会使用numpy工作的。 - yatu
显示剩余14条评论

6

对于在特定列中进行检查,您可以按以下方式简单地进行检查:

'test' in df.cloumn.values #which returns True or False

用于检查完整的数据框 df:

df.isin(["test"]).any().any() #which will return True or False

你如何适应这个条件以获取列名或索引? - JPWilson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接