python - 将单词列表与职位描述列表匹配的最佳方法 python

标签 python pandas

这是我的问题(我正在研究 python): 我有一个包含列的数据框: Index(['job_title', 'company', 'job_label', 'description'], dtype='object')

我有一个包含 300 项技能的单词列表:

keywords = ["C++","Data Analytics","python","R", ............ "Django"] 

我需要将这些关键字与每个职位描述相匹配,并获取一个新的数据框,说明 C++ 是否在职位描述 [0]...职位描述 [1]、职位描述 [2] 中是真还是假很快。

我的新数据框将是:

columns : ['job_title', 'company', 'description', "C++", "Data Analytics", ....... "Django"]

每列关键字如果与职位描述匹配(找到)或不匹配,则表示 true 或 false。

可能还有其他方法来构造数据帧(我正在听取建议)。

希望我的问题很清楚。我尝试使用正则表达式,但无法使其遍历每一行,我尝试使用“fnmatch”库进行循环,但无法使其工作。迄今为止最好的方法是:

df["microservice"]= df.description.str.contains("microservice") 

df["cloud-based architecture"] = df.description.str.contains("cloud-based architecture")

df["service oriented architecture"] = df.description.str.contains("service oriented architecture")

但是,首先我无法让它循环遍历描述列的每一行,所以我必须为每个单词输入 300 倍的代码(这没有意义)。其次,通过这种方式,我遇到了诸如“R”之类的少数单词的问题,因为它在每个描述中找到字母 R,因此它在每个描述中都会成立。

最佳答案

迭代关键字列表并从描述中提取每一列:

for name in keywords:
    df[name] = df['description'].apply(lambda x: True if name in x else False)

编辑:

这并不能解决 R 的问题。为此,您可以添加一个空格以确保它是隔离的,因此代码将是:

for name in keywords:
    df[name] = df['description'].apply(lambda x: True if ' '+str(name)+' ' in x else False)

但这真的很丑而且没有优化。正则表达式应该可以解决问题,但我必须回顾一下:找到了! [ ]*+[str(name)]+[.?!] 更好! (而且更合适)

关于python - 将单词列表与职位描述列表匹配的最佳方法 python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52041823/

相关文章:

python - 在Python中通过文本文件的索引创建矩阵

python - 将 pandas 列中的字典转换为数据框

python - 在 pandas 中创建质量分数列

python - 将数据分配给 for 循环中的现有列

python - pandas dataframe,如何获得某个索引的平均值

python - while循环不会在递归二分查找中停止

Python:我的脚本不允许我创建大文件

python - Django 向后关系

python - 与功能参数作斗争

python - KDB+ 像 asof 一样加入 pandas 中的时间序列数据?