将python数据框转换为列表[重复]

Posted

技术标签:

【中文标题】将python数据框转换为列表[重复]【英文标题】:convert python dataframe to list [duplicate] 【发布时间】:2013-01-27 04:14:36 【问题描述】:

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

【问题讨论】:

【参考方案1】:

pandas.Series,有一个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]

技术说明:在我的原始答案中,我说Seriesnumpy.ndarray 的子类,并继承了它的tolist 方法。虽然这适用于 Pandas 0.12 或更早版本,但在即将发布的 Pandas 0.13 版本中,Series 已被重构为NDFrame 的子类。 Series 仍然有一个tolist 方法,但它与同名的numpy.ndarray 方法没有直接关系。

【讨论】:

tolist() 是否有特殊原因会破坏 python 方法的命名约定?我相信 DataFrame 的等效方法是 to_list()。 @HenryHenrinson:在过去,Pandas Series 是 NumPy ndarrays 的子类。 ndarrays 有一个 tolist method。 Series tolist 方法 overrode the ndarray method 以不同方式处理 datetime64s。因此,命名约定的中断是 NumPy 命名约定的遗留问题。你是对的,现在它应该是 to_list 以符合所有其他 Series 和 DataFrame to_* 方法。【参考方案2】:

您也可以将它们转换为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

【讨论】:

以上是关于将python数据框转换为列表[重复]的主要内容,如果未能解决你的问题,请参考以下文章

在python中将列表错误地转换为数据框[重复]

如何在python中使用pandas将字典列表转换为数据框[重复]

Python:将两列数据框转换为一个插入列表[重复]

将字典列表转换为数据框 [重复]

将数据框转换为元组列表[重复]

将数据框列转换为字符串列表[重复]