我有一个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\n Python数据。。。
|
1.
|
云工程师
|
兼任
|
马里兰州
|
asdfasd fasdfasd fortqqw rtwergd房地产
|
应用程序开发\n\n应用程序集成。。。
|
2.
|
系统工程师
|
充分的时间
|
弗吉尼亚
|
qwerq e5r45yb rtfgs dfaesgf增加dfs
|
配置管理(CM)\n\n信息管理。。。
|
3.
|
数据工程师
|
兼任
|
弗吉尼亚
|
aweer scdfsf as dfa sdfsds vwerewr
|
大数据分析\n\n大数据管理\n\n P。。。
|
按“\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增加dfs
|
配置管理(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))