将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]
技术说明:在我的原始答案中,我说Series
是numpy.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数据框转换为列表[重复]的主要内容,如果未能解决你的问题,请参考以下文章