2015-05-20 4 views
0

У меня есть панд DataFrame с id колонка, глядя, как это:создать новый столбец на основе другого столбца, но зачистки

id     
A2015   
B2016   
C2017   

Я хочу два новых столбца следующим образом:

id   year  name 
A2015  2015  A Q 
B2016  2016  B Q 
C2017  2017  C Q 

так year столбец должен взять четыре последних символа столбца id, а столбец name должен принимать все, кроме последних четырех символов, и добавлять Q.

Как это можно достичь?

ответ

2

Вы можете получить их с помощью строковых методов.

Получить year, приняв участие в id строки

In [60]: df['year'] = df['id'].str[1:] 

И получить name взяв последние четыре символа id строки и добавление ' q'

In [61]: df['name'] = df['id'].str[:-4] + ' Q' 

In [62]: df 
Out[62]: 
     id year name 
0 A2015 2015 A Q 
1 B2016 2016 B Q 
2 C2017 2017 C Q 
+0

ах спасибо. я пошел правильным путем, но вместо того, чтобы обращаться через 'df ['id']. str' я сделал это через' str (df ['id']) ', что неверно ... – beta

1
df['year'] = df['id'].apply(lambda v : v[1:]) 
    df['name'] = df['id'].apply(lambda v : v[0] + ' Q') 

лямбда-функции, как правило, быстрее

+1

Не обязательно @sachin, [string методы] (http://pandas.pydata.org/pandas-docs/stable/text.html) были написаны с учетом ускорений. – Zero