2013-02-11 15 views
15

私は複数の列を持つPythonのdataFrameを持っています。リストにpythonデータフレームを変換

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] 

LogBlk = 0、Page = 0に関連付けられているBayFailsを探したいとします。

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

これは、[0,1,8,9]私が何をしたいのか

はリストにこのpandas.seriesを変換することで戻ります。誰もそれを行う方法を知っていますか?

答えて

30

pandas.Seriestolist 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] 

テクニカルノート:私のオリジナルの答えでは、私はSeriesnumpy.ndarrayのサブクラスであり、そのtolistメソッドを継承していると述べました。これはPandasバージョン0.12以降では当てはまりますが、リリース予定のPandasバージョン0.13ではSeriesNDFrameのサブクラスにリファクタリングされています。 Seriesにはまだtolistメソッドがありますが、同じ名前のメソッドと直接関係はありません。

+0

に変換することができますか? DataFrameの同等のメソッドはto_list()です。 –

+0

@HenryHenrinson:昔、PandasシリーズはNumPy ndarraysのサブクラスでした。 'ndarrays'には' 'tolist'メソッドがあります(http://docs.scipy.org/doc/numpy/reference/generated/numpy.ndarray.tolist.html)。 datetime64を異なる方法で扱うには、シリーズのtolistメソッド(* overdde * ndarrayメソッド)(https://github.com/pydata/pandas/issues/2447)を使用します。したがって、命名規則の破綻は、NumPyの命名規則からのハングオーバーです。あなたは現在、他のすべてのSeriesとDataFrameのto_ *メソッドに適合するために、今日は 'to_list'でなければなりません。 – unutbu

4

また、ToListメソッド()はPythonのメソッドの命名規則を破り、なぜ特定の理由があります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 
関連する問題