【发布时间】:2021-07-27 23:45:41
【问题描述】:
上下文:我将我认为是 DataFrame df.iloc[n] 的内容传递给函数。感谢dialogue here,我发现这是导致错误的原因,因为 Pandas 会自动将数据帧中的单行或列转换为系列,并且可以通过使用 df.iloc[[n]] 而不是 df.iloc[n] 轻松解决。
问题:我的问题是为什么Pandas 会这样做?使用 Series 而不是 DataFrames 是否有一些性能优势?这种自动转换为系列的原因是什么?
【问题讨论】:
-
这就像问为什么索引二维数组会将其转换为一维数组。它不会将其转换为系列,数据框的行在逻辑上是系列,而不是数据框。从技术上讲,这是
df.iloc[n]的(c,)和df.iloc[[n]]的(1, c)形状之间的区别,其中c是多个列。 -
我认为你说的不太对:
type(df.iloc[n])是一个系列,而type(df.iloc[[n]])是一个数据帧。这不仅仅是维度:我可以调用df.iloc[[n]].columns,而df.iloc[n].columns会引发错误。这里有真正的功能变化,而不仅仅是维度变化。我的问题是为什么 Pandas 会努力改变这个功能?这一定是有原因的。那是什么原因?谢谢!
标签: python pandas performance