【问题标题】:Filter rows in df based on number of string occurances根据字符串出现的次数过滤 df 中的行
【发布时间】:2020-09-29 04:20:32
【问题描述】:

我想过滤 df 中的行,条件是该行在一个长字符串列表中包含 2+ 个字符串的提及。我无法指定出现的次数。到目前为止,这是我的代码:

brands = ["a", "b", "c"]
df[df.Column.str.contains('|'.join(brands), re.IGNORECASE, regex=True, na=False)]

【问题讨论】:

  • df.column.str.isin(brands) 可以解决问题。检查元素列表的方法是使用 isin(name_of_list)

标签: python pandas data-manipulation


【解决方案1】:

也许使用count 而不是contains

df = pd.DataFrame({'Column':['ab','ABx','axy']})

df[df.Column.str.count('|'.join(brands), re.IGNORECASE, na=False)>=2]

输出:

  Column
0     ab
1    ABx

【讨论】:

    【解决方案2】:

    这是一个检查示例。这是你想要做的吗?

    import pandas as pd
    df = pd.DataFrame({'Test':['a','b','cat','dog']})
    print (df)
    df['check']= df['Test'].isin(['a','b','c'])
    print (df)
    

    这将导致:

      Test  check
    0    a   True
    1    b   True
    2  cat  False
    3  dog  False
    

    【讨论】:

      猜你喜欢
      • 2021-12-30
      • 2017-07-03
      • 2018-09-16
      • 2012-12-06
      • 2020-04-07
      • 1970-01-01
      • 1970-01-01
      • 2023-01-15
      • 2013-02-26
      相关资源
      最近更新 更多