将python数据帧转换为列表

convert python dataframe to list

本问题已经有最佳答案,请猛点这里访问。

我有一个包含多列的python数据框架。

1
2
3
4
5
  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。

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

这将返回[0,1,8,9]

我要做的是将这个pandas.series转换成一个列表。有人知道怎么做吗?


pandas.Series具有tolist方法:

1
2
3
4
5
6
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方法。虽然对于0.12版或更高版本的熊猫来说是如此,但在即将发布的0.13版熊猫中,Series被重构为NDFrame的一个子类。Series方法仍有tolist方法,但与同名的numpy.ndarray方法没有直接关系。


你也可以把它们转换成numpy arrays

1
2
3
4
5
6
7
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