2016-02-22 14 views
7

Walczę z pandami i na razie przegrywam. Mam tabelę źródłową podobny do tego:Zdobądź pierwszą literę ciągu z kolumny

import pandas as pd 

a=pd.Series([123,22,32,453,45,453,56]) 
b=pd.Series([234,4353,355,453,345,453,56]) 
df=pd.concat([a, b], axis=1) 
df.columns=['First', 'Second'] 

Chciałbym dodać nową kolumnę do tej ramki danych z pierwszej cyfry od wartości w kolumnie „pierwsze”: a) liczba zmian do łańcucha z kolumny „pierwsze” b) wyodrębnianie pierwszego znaku z nowo utworzonego ciągu znaków c) Wyniki z b zapisać jako nową kolumnę w ramce danych

Nie wiem, jak zastosować to do obiektu ramki danych pandy. Byłbym wdzięczny za pomoc w tym.

+0

można pokazać pożądany wynik? – IanS

Odpowiedz

14

oddanych dtype z COL o str i można wykonać wektoryzowane krojenie nazywając str:

In [29]: 
df['new_col'] = df['First'].astype(str).str[0] 
df 

Out[29]: 
    First Second new_col 
0 123  234  1 
1  22 4353  2 
2  32  355  3 
3 453  453  4 
4  45  345  4 
5 453  453  4 
6  56  56  5 

jeśli trzeba można ponownie rzucić dtype powrotem nazywając astype(int) na kolumnie

+0

W przypadku dużych tablic odlewanie na ciąg nie jest najszybsze: http://stackoverflow.com/a/13547396/5276797 – IanS

+0

@IanS true, jeśli długość cyfry została ustalona, ​​wtedy 'floordiv' działałoby lepiej tutaj – EdChum

Powiązane problemy