Pandas 什么';创建一个系列时,使用pd.Index和显式列表之间有什么区别?

Pandas 什么';创建一个系列时,使用pd.Index和显式列表之间有什么区别?,pandas,dataframe,series,Pandas,Dataframe,Series,例如: pd.Series([1,2,3], index = ['a','b','c']) vs 什么时候使用一个比另一个合适 没关系。index参数接受任何类似列表的序列。无论传递什么,都可以使用core/index/base.py中的函数将数据转换为序列。此函数验证传递的索引并构造一个pd.index对象 如果您自己传递了一个pd.Index对象,请确保\u Index可以提前退出。否则,它将不得不从头开始创建一个。因此,在性能方面有一些小的好处,但我想说的是,收益处于“认真地说,别担心

例如:

pd.Series([1,2,3], index = ['a','b','c']) 
vs


什么时候使用一个比另一个合适

没关系。
index
参数接受任何类似列表的序列。无论传递什么,都可以使用
core/index/base.py
中的函数将数据转换为序列。此函数验证传递的索引并构造一个
pd.index
对象

如果您自己传递了一个
pd.Index
对象,
请确保\u Index
可以提前退出。否则,它将不得不从头开始创建一个。因此,在性能方面有一些小的好处,但我想说的是,收益处于“认真地说,别担心”的水平


按照惯例,您只需传递一个列表(作为最简单的选项),除非您有充分的理由这样做。

根据的文档,索引参数可以是:类数组或索引(1d)。在从数组创建索引时,不做任何更改。在使用现有索引创建新对象时,pd.Index非常有用,感谢您的澄清。我只是不明白为什么pd.Index会首先存在,但我知道它如何与另一个现有的索引一起使用。@NimbleTortoise这是一个相当广泛的问题,但它用于快速查找和访问。它在许多函数内部使用。小问题:
确保索引在默认情况下不会复制,并且
系列
构造函数不会告诉它复制,因此我认为如果传递了
索引
,就不会复制,因为您在第5267行提前退出。请注意,不复制是可以的,因为索引是不可变的。你可能会看到一些小的性能改进,通过一个
索引
而不是像列表一样的,尽管对于大多数实际用例来说还不够重要,例如时间
pd.Series(list('abc')*10**5,Index=pd.Index([4,5,6]*10**5))
而不是
pd.Series(list('abc')*10**5,Index=[4,5,6]*10**5)
@root感谢您的评论。是的,那是疏忽,谢谢。不用担心;感谢您为回答
pandas
问题所做的一切工作!
pd.Series([1,2,3], index = pd.Index(['a','b','c'])