2014-09-11 17 views
15

Chcę utworzyć nową kolumnę w Pandach za pomocą ciągu pokrojonego w plasterki dla innej kolumny w ramce danych.Pandy tworzą nową kolumnę z wycinka ciągu innej kolumny.

Na przykład.

Sample Value New_sample 
AAB  23  A 
BAB  25  B 

Gdzie New_sample to nowa kolumna utworzona z prostego [:1] plasterek Sample

Próbowałem wiele rzeczy bezskutecznie - czuję, że brakuje czegoś proste.

Jaki jest najbardziej wydajny sposób na zrobienie tego?

Odpowiedz

29

można wywołać metodę str i zastosować kawałek, będzie to znacznie szybciej niż inne metody jak to wektoryzowane (dzięki @unutbu):

df['New_Sample'] = df.Sample.str[:1] 

Można również wywołać funkcję lambda na df, ale będzie to wolniejsze w przypadku większych ramek danych:

In [187]: 

df['New_Sample'] = df.Sample.apply(lambda x: x[:1]) 
df 
Out[187]: 
    Sample Value New_Sample 
0 AAB  23   A 
1 BAB  25   B 
+0

Po prostu nie interesuje mnie, w jaki sposób zastosować to do kolumny indeksu? Ponieważ nie wydaje mi się, aby to działało - zawsze mogę tylko zresetować index() kolumnę i zrobić to wtedy .. – BML91

+1

@ BML91 nie jest łatwo, problem polega na tym, że chociaż 'pd.Series (df.index) .str [ : 1] "sam działa, jak scalić lub dodać to z powrotem do df? Ta linia tworzy serię z wartościami indeksu rozpoczynającymi się od 0, ale twój indeks w głównym df to 'AAB, BAB..' itd. Więc najłatwiej jest zresetować indeks, wyodrębnić kolumnę i ustawić indeks ponownie – EdChum

Powiązane problemy