为什么熊猫默认情况下会遍历DataFrame列?

发布于 2021-01-29 18:33:44

试图了解熊猫某些功能背后的设计原理。

如果我有一个3560行18列的DataFrame,那么

len(frame)

是3560,但是

len([a for a in frame])

是18。

也许对于来自R的人来说这很自然;对我来说,感觉不太“ Pythonic”。是否在某处介绍了熊猫的基本设计原理?

关注者
0
被浏览
50
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    DataFrame主要是基于列的数据结构。在后台,DataFrame内部的数据存储在块中。大致来说,每个dtype都有一个块。 每列都有一个dtype
    。因此,可以通过从单个块中选择适当的列来访问列。相反,选择单个行需要从每个块中选择合适的行,然后形成一个新的系列,并将每个块的行中的数据复制到系列中。因此,遍历DataFrame的行(在幕后)不像遍历列那样自然。

    如果您需要遍历各行,则仍然可以调用df.iterrows()df.iterrows出于相同的原因(如果不自然),应避免使用它-
    要求复制,这会使过程比遍历列慢。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看