16

我有一个包含多列的 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 转换为列表。有谁知道这是怎么做到的吗?

4

2 回答 2

36

pandas.Series,有一个tolist方法

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]

技术说明:在我最初的回答中,我说这Series是它的子类numpy.ndarray并继承了它的tolist方法。虽然对于 Pandas 0.12 或更早版本也是如此,但在即将发布的 Pandas 0.13 版本中,Series已将其重构为NDFrame. Series仍然有一个方法,但它与同名tolist的方法没有直接关系。numpy.ndarray

于 2013-02-11T23:13:34.130 回答
3

您也可以将它们转换为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
于 2013-02-12T17:54:15.263 回答