根据pandas中列的值的过滤器选择列

时间:2018-06-12 12:11:30

标签: python pandas

是否有一种简单的方法可以从数据框中选择列,它们的值包含某个单词(不仅是这个特定的单词,还有行值中的一些额外的单词或数字)?

我尝试了一个查询,但它在列名中搜索了未知单词,这是我不想要的。

df.filter(like='Unknown')

然后我尝试了一种不同的方法,获取包含该单词的所有行,创建一个数据帧,然后从中获取列名但是再次无效。

value_list = ['Unknown']
df_unknown = df[df.str.contains(value_list)]

我也尝试了以下查询

df_uknown = df[df.isin(value_list)]

但它带回所有行的Null或未知值的整个数据帧,具体取决于他们是否将此单词作为值。

我不确定下一步该做什么。答案可能很简单,但我不知道

由于

1 个答案:

答案 0 :(得分:0)

我认为需要使用|为正则表达式OR创建的所有单词创建最终模式并比较某些列:

value_list = ['Unknown']
pat = '|'.join(r"\b{}\b".format(x) for x in value_list)

df_unknown = df[df['col'].str.contains(pat)]