假设我有一些Pandas数据框df
,其中有一个名为“ HEIGHT”的列。
如果我发布list(df["HEIGHT"])
,那么这将给我该列中项目的列表,其顺序与它们在数据框中的确切顺序相同,即,按数据帧的索引排序。
总是这样吗? df["HEIGHT"]
命令将返回一个Series,list()
将其转换为列表。但是这些操作是否始终保持订单顺序?有趣的是,到目前为止,从我的阅读来看,熊猫作者(!)的[书1并不为人所知,这些基本操作何时能保持秩序?是也许总是保留订单,还是有一些简单的规则来知道何时应该保留订单?
答案 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。