【问题标题】:Check if keyword in dataframe is present in another dataframe column检查数据框中的关键字是否存在于另一个数据框列中
【发布时间】:2021-09-06 13:46:04
【问题描述】:

我想检查某些关键字是否存在于另一个数据框中。 如果 df2['name'] 中的列包含 df1['keywords'] 中的关键字,则在满足 df1['app'] 条件的每一行中在 df2 中创建一个新列

df1 = pd.DataFrame({'keywords': ['Excel', 'Agir', 'ILAB', 'GPO', 'DTAV', 'BI', 'Twin'],
                'app': ['Microsoft Excel', 'App Agir', 'Laborátório Digital', ' Gestão do processo', 'Digital', 'Painel BI', 'Digital']})

df2 = pd.DataFrame({'name': ['Word', 'app Excel', 'Agir', 'GPO', 'Painel BI', 'Bob', 'Revit', 'Autocad', 'Acces']})

在 df2 中,我需要创建一个新列并填写匹配结果

例如,关键字“Excel”出现在 df2 的第二行,所以我想在 df2['new column'] 列中填充与 df1['app'] 中关键字 Excel 对应的行,那就是'Microsoft Excel

谢谢

【问题讨论】:

  • 到目前为止你尝试了什么?

标签: python pandas dataframe


【解决方案1】:

使用str.extract()df2.name中提取关键字:

keywords = '|'.join(df1.keywords)
extracted = df2.name.str.extract(rf'({keywords})')[0].values

# array([nan, 'Excel', 'Agir', 'GPO', 'BI', nan, nan, nan, nan],
#       dtype=object)

然后使用reindex()extracted关键字转换为它们对应的df1.app值:

df2['new column'] = df1.set_index('keywords').reindex(extracted).app.values

#         name           new column
# 0       Word                  NaN
# 1  app Excel      Microsoft Excel
# 2       Agir             App Agir
# 3        GPO   Gestão do processo
# 4  Painel BI            Painel BI
# 5        Bob                  NaN
# 6      Revit                  NaN
# 7    Autocad                  NaN
# 8      Acces                  NaN

【讨论】:

    猜你喜欢
    • 2022-01-18
    • 1970-01-01
    • 1970-01-01
    • 2021-05-07
    • 2019-11-30
    • 1970-01-01
    • 2021-12-25
    • 1970-01-01
    相关资源
    最近更新 更多