создать несколько столбцов в dataframe из функции - PullRequest
0 голосов
/ 10 мая 2018

Может ли кто-нибудь помочь мне создать два новых столбца в этом фрейме данных?

Желание состоит в том, чтобы проанализировать состояние "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)

1 Ответ

0 голосов
/ 10 мая 2018

Вместо

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

кажется избыточным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...