我有一个 Pandas DataFrame,其中包含有关各种作业的信息。我正在根据某些列表中的值进行筛选。
我对单值条件过滤没有问题。但是,我在对Job Description
字段(本质上是一个段落和多行)和字段(Job Skills
在我按 拆分后本质上是一个列表)进行条件过滤时遇到了困难。\n\n
示例数据:
dftest=pd.DataFrame({
'Job Posting':['Data Scientist', 'Cloud Engineer', 'Systems Engineer', 'Data Engineer'],
'Time Type':['Full Time', 'Part Time', 'Full Time', 'Part Time'],
'Job Location': ['Colorado', 'Maryland', 'Florida', 'Virginia'],
'Job Description': [
'asdfas fasdfsad sadfsdaf sdfsdaf',
'asdfasd fasdfasd fwertqqw rtwergd fverty',
'qwerq e5r45yb rtfgs dfaesgf reasdfs dafads',
'aweert scdfsdf asdfa sdfsds vwerewr'],
'Job Skills': [
'Algorithms\n\nData Analysis\n\nData Mining\n\nData Modeling\n\nData Science\n\nExploratory Data Analysis (EDA)\n\nMachine Learning\n\nUnstructured Data',
'Application Development\n\nApplication Integrations\n\nArchitectural Modeling\n\nCloud Computing\n\nSoftware Product Design\n\nTechnical Troubleshooting',
'Configuration Management (CM)\n\nInformation Management\n\nIntegration Testing\n\nRequirements Analysis\n\nRisk Management\n\nVerification and Validation (V&V)',
'Big Data Analytics\n\nBig Data Management\n\nDatabase Management\n\nData Mining\n\nData Movement\n\nETL Processing\n\nMetadata Repository']
})
招聘信息 | 时间类型 | 工作地点 | 职位描述 | 工作技能 | |
---|---|---|---|---|---|
0 | 数据科学家 | 全职 | 马里兰州 | 藝術本身 | 算法\n\n数据分析\n\nPython\n\n数据... |
1 | 云工程师 | 兼职 | 马里兰州 | asdfasd fasdfasd fwertqqw rtwergd fverty | 应用程序开发\n\n应用程序集成... |
2 | 系统工程师 | 全职 | 弗吉尼亚州 | qwerq e5r45yb rtfgs dfaesgf reasdfs dafads | 配置管理 (CM)\n\n信息管理... |
3 | 数据工程师 | 兼职 | 弗吉尼亚州 | aweert scdfsdf asdfa sdfsds vwerewr | 大数据分析\n\n大数据管理\n\nP... |
按“\n\n”列出并拆分‘工作技能’数据:
state = ['Virginia', 'Maryland', 'District of Columbia']
time = ['Full Time']
skills = ['AI', 'Artificial Intelligence', 'Deep Learning', 'Machine Learning',
'Feature Selection', 'Feature Selection', 'Python', 'Cloud Computing']
dftest['Job Skills'] = dftest['Job Skills'].str.split('\n\n')
结果:
[Algorithms, Data Analysis, Data Mining, Data Modeling, Data Science, Exploratory Data Analysis (EDA), Machine Learning, Unstructured Data]
[Application Development, Application Integrations, Architectural Modeling, Cloud Computing, Software Product Design, Technical Troubleshooting]
[Configuration Management (CM), Information Management, Integration Testing, Requirements Analysis, Risk Management, Verification and Validation (V&V)]
[Big Data Analytics, Big Data Management, Database Management, Data Mining, Data Movement, ETL Processing, Metadata Repository]
条件过滤:
dftest[dftest['Job Location'].isin(state) & dftest['Time Type'].isin(time)]
结果:
招聘信息 | 时间类型 | 工作地点 | 职位描述 | 工作技能 | |
---|---|---|---|---|---|
0 | 数据科学家 | 全职 | 马里兰州 | 藝術本身 | [算法、数据分析、Python、数据挖掘... |
2 | 系统工程师 | 全职 | 弗吉尼亚州 | qwerq e5r45yb rtfgs dfaesgf reasdfs dafads | 配置管理(CM)、信息管理... |
问题:现在我想获取值dftest['Job Skills']
并找到与列表匹配的所有行skills
。
我尝试过以下方法:
- 遍历字段中的值并与技能列表进行比较,然后以相反的方式执行,但这是行不通的。
dftest['Job Skills'].filter(like=skills, axis=0)
,但这会导致另一个错误。
我想我差不多搞定了,但如果有匹配项,我只想得到一个唯一的行。例如,这显示第 0 行和第 3 行匹配,所以我想打印这些行。
for i in skills:
print('skill: ',i)
print(dftest['Job Skills'].map(set([i]).issubset))