Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么熊猫会将数据帧的一行(或一列)转换为一个系列?_Python_Pandas_Performance - Fatal编程技术网

Python 为什么熊猫会将数据帧的一行(或一列)转换为一个系列?

Python 为什么熊猫会将数据帧的一行(或一列)转换为一个系列?,python,pandas,performance,Python,Pandas,Performance,上下文:我正在将我认为是数据帧的df.iloc[n]传递到一个函数中。多亏了,我发现这会导致错误,因为Pandas会自动将数据帧中的一行或一列转换为一个系列,并且可以通过使用df.iloc[[n]]而不是df.iloc[n]轻松解决 问题:我的问题是为什么熊猫会这样做?使用系列而不是数据帧是否有一些性能优势?自动转换为系列的原因是什么?根据熊猫文档 考虑熊猫数据结构的最佳方式是将其作为低维数据的灵活容器。例如,DataFrame是Series的容器,而Series是Scalar的容器。我们希望能

上下文:我正在将我认为是数据帧的df.iloc[n]传递到一个函数中。多亏了,我发现这会导致错误,因为Pandas会自动将数据帧中的一行或一列转换为一个系列,并且可以通过使用
df.iloc[[n]]
而不是
df.iloc[n]
轻松解决


问题:我的问题是为什么熊猫会这样做?使用系列而不是数据帧是否有一些性能优势?自动转换为系列的原因是什么?

根据熊猫文档

考虑熊猫数据结构的最佳方式是将其作为低维数据的灵活容器。例如,DataFrame是Series的容器,而Series是Scalar的容器。我们希望能够以类似字典的方式从这些容器中插入和删除对象


因此,这里不进行转换,而是检索具有不同属性/方法的对象。

这就像问为什么索引2d数组会将其转换为1d数组一样。它不会将其转换为一个系列,数据帧的行在逻辑上是一个系列,而不是一个数据帧。从技术上讲,这是
df.iloc[n]
(c,)
df.iloc[[n]]
(c,)
的形状之间的区别,其中
c
是许多列。我认为你说的不太对:
类型(df.iloc[n])
是一个系列,而
类型(df.iloc[[n]
是一个数据框架。这不仅仅是维度:我可以调用
df.iloc[[n]].columns
,而
df.iloc[n]。columns
会抛出错误。这里有真正的功能变化,而不仅仅是维度变化。我的问题是为什么熊猫会努力改变这种功能?这一定是有原因的。这是什么原因?谢谢这太完美了,谢谢:“……检索具有不同属性/方法的对象”正是我所需要的洞察力。