【问题标题】:Creating a column based on matches from a list根据列表中的匹配项创建列
【发布时间】:2020-09-11 20:25:11
【问题描述】:

我有一个数据框,其中有一列职位名称和公司名称在每行的同一字符串中,我还有一个所有可能的公司名称的列表。

如何搜索我的数据框列以查看它是否包含我列表中的公司之一,然后如果某些行中有匹配项,则创建一个仅包含公司名称的新列?附上两张照片。

我尝试了一些解决方案,但找不到一个有效的解决方案。

我遵循的原始逻辑是; df['Company'] = df['Title'].str.contains(x for x in joblist) 但显然这会引发错误。

感谢您的帮助。

【问题讨论】:

    标签: python pandas list dataframe multiple-columns


    【解决方案1】:

    Series.str.contains| 的连接值一起用于正则表达式or 用于测试值:

    df['test'] = df['Title'].str.contains('|'.join(joblist))
    

    如果想通过列表提取值,请使用Series.str.extract:

    df['Company'] = df['Title'].str.extract(f'({"|".join(joblist)})', expand=False)
    

    【讨论】:

      【解决方案2】:

      您需要使用公司访问列表中的所有项目,并将它们与“标题”列的每个值进行比较。 您可以使用运算符in 检查一个字符串是否包含另一个字符串。

      all_titles = df['Title']
      for x in all_titles:
          for y in df:
              if (y in x ):
                  //your code here
      

      【讨论】:

      • 我认为这两个选项都可以使用,但是对于我得到的列表版本和位置 8466 的错误不平衡括号和系列选项我在位置 9401 得到错误的转义 \C ...所以列表/series 很脏,但我找不到问题,我替换了一些明显的字符,例如 ' 导致问题....任何建议
      猜你喜欢
      • 2019-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-17
      • 2020-04-11
      • 2021-03-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多