保留顺序的同时从Pandas数据框中提取数据作为列表

时间:2018-10-11 16:04:02

标签: pandas python-3.6

假设我有一些Pandas数据框df,其中有一个名为“ HEIGHT”的列。

如果我发布list(df["HEIGHT"]),那么这将给我该列中项目的列表,其顺序与它们在数据框中的确切顺序相同,即,按数据帧的索引排序。

总是这样吗? df["HEIGHT"]命令将返回一个Series,list()将其转换为列表。但是这些操作是否始终保持订单顺序?有趣的是,到目前为止,从我的阅读来看,熊猫作者(!)的[书1并不为人所知,这些基本操作何时能保持秩序?是也许总是保留订单,还是有一些简单的规则来知道何时应该保留订单?

2 个答案:

答案 0 :(得分:2)

除非您进行某些更改,否则pandas系列中元素的顺序(即pandas DataFrame中的列)将不会更改。并保证了Python list的顺序可以反映插入顺序(SO thread)。

是的,df[0].tolist()(比list(df[0])快一点)应该总是产生与df[0]中的元素相同顺序的Python元素列表。

答案 1 :(得分:1)

订单将始终被保留。使用list函数时,需要为其提供迭代器,并通过对其进行迭代来构造列表。有关迭代器的更多信息,您可能需要阅读PEP 234的迭代器。

迭代顺序由您提供的迭代器确定。 pd.Series.__iter__()(用于访问对象迭代器的标准方法,由list方法和类似方法搜索)提供系列的迭代器。有关Pandas中的迭代和索引编制的更多信息,请考虑阅读relevant API reference section和更深入的indexing documentation