有人可以帮我在这个数据框中创建两个新列吗?
希望解析状态,“s”,然后确保从原始标题字符串中删除状态。结果将包括原始标题,清理标题(没有尾随状态),最后是州名。
df=pd.Series(['Accommodation Payroll Employment in Texas',
'Accounting, Tax Preparation, Bookkeeping, and Payroll Services Payroll Employment in Texas']).to_frame()
df.columns=['title']
def state_code(row):
t=None
s=None
if len(row['title'].split(' in '))==2:
s=str(row['title'].split(' in ')[1])
t=str(row['title'].split(' in ')[0])
elif len(row['title'].split(' in '))==3:
s=str(row['title'].split(' in ')[2])
t=str(row['title'].split(' in ')[0]+row['title'].split(' in ')[1])
elif len(row['title'].split(' for '))==2:
s=str(row['title'].split(' for ')[1])
t=str(row['title'].split(' for ')[0])
return t,s
df[['title_clean','state']]=df.apply(state_code,axis=1)
答案 0 :(得分:2)
而不是
return t, s
尝试
return pd.Series(dict(state=s, title_clean=t))
而不是
df[['title_clean','state']]=df.apply(state_code,axis=1)
使用
pd.concat([df, df.apply(state_code,axis=1)], axis=1)
顺便提一下,你的
t = None
s = None
似乎是多余的。