目标:对多字段实现分列,有效解决串行问题
提取数据,分列“岗位属性”字段:
我们爬虫或清洗数据时经常会遇到多字段在同一列的情况,这里以字段“岗位属性”为例:
可以将多字段“岗位属性”分列为’工作地区’、‘工作经验要求’,‘学历要求’,‘招募人数’,‘发布时间’。如果数据非常整齐,可以使用split函数按照“|”进行分列,同Excel分列,比如’工作地区’字段全在第一个位置,因此成功分列。
split=[]
for i in range(len(Big_Data_Position)):
split.append(Big_Data_Position['岗位属性'][i].split('\xa0\xa0|\xa0\xa0'))#split分列后是一个列表
pd.DataFrame(split)
由于部分数据字段在该行的缺失,导致行数据不整齐,数据直接按照‘|’分列会产生串行现象,比如第二例的本科、3-4年经验数据会在同一列,会产生串行现象。
串行的解决方法之一是根据这列数据的规律,使用循环判断的方法。如果这一列缺失该列数据,就利用空值进行填充。
函数体:
def clear(char_list,missing_data_filling_value):
people_list=[]
for i in Big_Data_Position['岗位属性']:#i为一个多字段字符串
for j in i.split('\xa0\xa0|\xa0\xa0'):#这里\xa0\xa0|\xa0\xa0相当于|,是split分列的字符,j是一个列表
for k in j:#k是列表里的一个字符
if k in char_list:#char_list是根据数据规律的‘字’列表
break
if k in char_list:#传入break掉的k
i=j#用有效数据替换列表
if type(i)==list:#如果没有替换就为空
i=missing_data_filling_value#为空的话等于参数2,根据需要可以填充None、不确定,空字符串''等。
people_list.append(i)
return people_list
这里需要找到对应字段的规律,这里"招募人数"字段的规律是都含有“招”,因此,不论它在哪一列,在分列后的哪个位置,都可以进行准确的分列。
Big_Data_Position['招募人数']=clear(['招'])
Big_Data_Position['发布时间']=clear(['布'])
Big_Data_Position['学历要求']=clear(['本','专','士','中'])
清洗后的数据,成功分列: