繁体   English   中英

检查来自一个 dataframe 的文本是否存在于另一个 dataframe Python

[英]Check if text from one dataframe exists in another dataframe Python

我是使用文本和 nlp 的新手,现在我有两个这样的数据框(原始数据非常大):

  1. 测向仪
全名 日期 价值
STEAM/暴雪有限责任公司-合资企业 2001-08-03
ACCO/SSD/高频公司 2020-03-03
阿提哈德航空/汉莎航空/HD LLC 2018-01-12
约翰集团 PLC/劳斯莱斯 PLC 2005-12-19
FEDRA/KELL ELECTRONICS-战略联盟 1999-09-27
CBC/MAFA STUDIOS {CBC/MAFA ENTERTAINMENT} 2013-06-24
  1. 测向仪
公司 另一个值
灵魂名字交互 50
阿提哈德公司 300
劳斯莱斯 plc comp 8个
玛法公司 1000
汉莎航空公司 12
Dll有限公司 18
阿提哈德机场 1个
高清公司 743

我需要从 DF2 的“公司”列检查 DF1 的“All_name”列中是否有公司。 结果必须类似于新的 dataframe,如果它们在 DF1 中,则具有来自 DF2 的值。 在这个例子中,它看起来像:

DF_结果:

公司 另一个值
阿提哈德公司 300
劳斯莱斯 plc comp 8个
玛法公司 1000
汉莎航空公司 12
阿提哈德机场 1个
公司高清 743

困难在于数据框中两列之间的差异,只有一些词是相似的。 我必须比较单词(?)或其他东西......

这将适用于此数据集,但在大型数据集上使用它时要小心,因为它可能会给你一些误报,因为数据非常混乱:

df_1['All_name'] = df_1['All_name'].str.lower()
df_2['Soul Name Intertament'] = df_2['Soul Name Intertament'].str.lower()
all_companies = df_1['All_name'].str.split('/').explode().str.split(' ')

def apply_this(x):
    for company in all_companies:
        if len(set(x.split(' ')).intersection(set(company)))>=1:
            return True
    return False

df_result = df_2[df_2['Soul Name Intertament'].apply(lambda x: apply_this(x))]
print(df_result)

Output:

      Soul Name Intertament    50
0            etihad company   300
1      rolls-royce plc comp     8
2          mafa corporation  1000
3  aircorporation lufthansa    12
5            airport etihad     1
6            hd corporation   743

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM