你好,我正在尝试获取包含特定单词的数据框的列名。
例如:我有一个数据框,
NA good employee
Not available best employer
not required well manager
not eligible super reportee
my_word=["well"]
如何检查数据框中是否存在“well”,以及包含“well”的列名。
提前感谢!
你好,我正在尝试获取包含特定单词的数据框的列名。
例如:我有一个数据框,
NA good employee
Not available best employer
not required well manager
not eligible super reportee
my_word=["well"]
使用 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 += cols
或 my_word = my_word + cols
。 - jezraelfor item in cols: my_word+=df[item].values.tolist()
但如果我们有pandas的方法会更好 - Pyd对于在特定列中进行检查,您可以按以下方式简单地进行检查:
'test' in df.cloumn.values #which returns True or False
用于检查完整的数据框 df:
df.isin(["test"]).any().any() #which will return True or False