首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么默认情况下Pandas要在DataFrame列上迭代?

为什么默认情况下Pandas要在DataFrame列上迭代?
EN

Stack Overflow用户
提问于 2014-09-18 16:44:36
回答 2查看 5.9K关注 0票数 8

试图理解Pandas的一些特性背后的设计原理。

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

代码语言:javascript
复制
len(frame)

是3560,但是

代码语言:javascript
复制
len([a for a in frame])

才18岁。

对于来自R的人来说,这可能是很自然的;对我来说,这感觉并不是很“Pythonic”。有没有介绍什么地方潘达的基本设计原理?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-09-18 16:59:25

DataFrame主要是一种基于列的数据结构.在遮罩下,DataFrame内部的数据存储在块中。粗略地说,每个dtype有一个块。每一列都有一个dtype。因此,可以通过从单个块中选择适当的列来访问列。相反,选择单个行需要从每个块中选择适当的行,然后形成一个新的Series,并将数据从每个块的行复制到Series中。因此,迭代遍历DataFrame的行并不像遍历列那样自然。

但是,如果需要迭代行,仍然可以调用df.iterrows()。如果可能的话,您应该避免使用df.iterrows,原因与它不正常的原因相同--它需要复制,这使得这个过程比在列中迭代要慢。

票数 15
EN

Stack Overflow用户

发布于 2014-09-18 16:57:14

文档中有一个很好的解释-- Pandas DataFrames的迭代应该是"dict-like“,所以迭代就在键(列)上。

可以说,对于Series的迭代超过了值,这有点令人困惑,但正如docs注意到的那样,这是因为它们更像“数组”。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25918149

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档