代码之家  ›  专栏  ›  技术社区  ›  Ast

基于pandas中列值的筛选器选择列[重复]

  •  0
  • Ast  · 技术社区  · 7 年前

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

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

    df.filter(like='Unknown')
    

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

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

    我还尝试了以下查询

    df_uknown = df[df.isin(value_list)]
    

    但它将整个数据帧带回空值或所有行的未知值,这取决于它们是否将这个词作为值。

    我不知道下一步该怎么办。答案可能很简单,但我没想到

    谢谢

    1 回复  |  直到 7 年前
        1
  •  0
  •   jezrael    7 年前

    我相信需要创造一个最终的模式,所有的单词都由 | 对于regex OR 并比较一些列:

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