2013-02-11 21 views
15

Mam Python DataFrame z wieloma kolumnami.Konwertuj ramkę danych Pythona na listę

LogBlk Page         BayFail  
    0   0         [0, 1, 8, 9] 
    1   16   [0, 1, 4, 5, 6, 8, 9, 12, 13, 14] 
    2   32   [0, 1, 4, 5, 6, 8, 9, 12, 13, 14] 
    3   48   [0, 1, 4, 5, 6, 8, 9, 12, 13, 14] 

Chcę znaleźć BayFails, który jest powiązany z LogBlk = 0 i Page = 0.

df2 = df[ (df['Page'] == 16) & (df['LogBlk'] == 0) ]['BayFail'] 

ten powróci [0,1,8,9]

Co chcę zrobić, to przekonwertować to pandas.series do listy. Czy ktoś wie, jak to zrobić?

Odpowiedz

30

pandas.Series, ma tolist method:

In [10]: import pandas as pd 

In [11]: s = pd.Series([0,1,8,9], name = 'BayFail') 

In [12]: s.tolist() 
Out[12]: [0L, 1L, 8L, 9L] 

Uwaga techniczna: W moim oryginalnym odpowiedź Powiedziałem, że Series była podklasą numpy.ndarray i odziedziczył jego metodę tolist. Chociaż jest to prawdziwe w przypadku wersji Pand w wersji 0.12 lub starszej, w niedługo opublikowanej wersji Pand w wersji 0.13, Series została refaktoryzowana jako podklasa o wartości NDFrame. Series nadal ma metodę tolist, ale nie ma ona bezpośredniego związku z metodą o tej samej nazwie pod numerem numpy.ndarray.

+0

Czy istnieje szczególny powód tolist() przełamuje konwencję nazewnictwa dla metod Pythona? Metoda podobna do DataFrame to, jak sądzę, to_list(). –

+0

@HenryHenrinson: W dawnych czasach seria Pandas była podklasą Numdy ndarrays. 'ndarrays' ma metodę [' tolist'] (http://docs.scipy.org/doc/numpy/reference/generated/numpy.ndarray.tolist.html). Metoda 'tolist' Series [* overrode * metoda ndarray] (https://github.com/pydata/pandas/issues/2447) do obsługi datetime64s inaczej. Więc przerwa w nazewnictwie jest zawieszeniem konwencji nazewnictwa NumPy. Masz rację, że w dzisiejszych czasach powinno to być 'to_list' zgodne ze wszystkimi innymi metodami' to_ * 'Series i DataFrame. – unutbu

4

Można także konwertować je do numpy arrays

In [124]: s = pd.Series([0,1,8,9], name='BayFail') 

In [125]: a = pd.np.array(s) 
Out[125]: array([0, 1, 8, 9], dtype=int64) 

In [126]: a[0] 
Out[126]: 0 
Powiązane problemy