首页 >后端开发 >Python教程 >如何高效地迭代填充 Pandas DataFrame?

如何高效地迭代填充 Pandas DataFrame?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-11 08:58:10856浏览

How to Efficiently Fill a Pandas DataFrame Iteratively?

创建一个空的 Pandas DataFrame,然后填充它

迭代地用值填充 DataFrame

使用给定的 DataFrame 文档,您想要迭代用时间序列类型计算中的值填充 DataFrame。目标是使用 A 列、B 列和时间戳行(全部为 0 或全部为 NaN)来初始化 DataFrame。然后,您想要添加初始值并检查此数据,根据之前的行计算新行,例如 row[A][t] = row[A][t-1] 1 左右。

虽然当前使用迭代器、scipy 的零函数和日期时间的代码可能有效,但它可以改进。

为什么不增长 DataFrame按行?

通常不建议按行增长 DataFrame,原因如下:

  • 计算成本: 追加到列表并创建与创建一个空 DataFrame 并一遍又一遍地附加到它相比,一次性 DataFrame 的计算强度较小再次。
  • 内存使用:列表占用的内存更少,并且是比 DataFrame 更轻的数据结构,使它们的追加和删除效率更高。
  • 数据类型推断:如果追加到 DataFrame,最终可能会得到对象列,这会影响 pandas 的性能。另一方面,列表允许自动推断数据类型。
  • 索引管理:当您从列表创建 DataFrame 时,会自动为您的数据创建 RangeIndex,这可以节省您的时间。自己管理索引的麻烦。

推荐的方法:将数据累积在list

与其按行增长 DataFrame,不如将数据累积在列表中,然后使用 pd.DataFrame(data) 初始化 DataFrame。这种方法具有以下优点:

  • 效率:计算效率更高,需要更少的内存。
  • 灵活性:列表可以转换为 list-of-lists 和 list-of-dicts 格式,这些格式都被pd.DataFrame.
  • 方便:它自动处理索引管理和数据类型推断。

要考虑的替代方案

在累积数据时列表是首选方法,有两种更糟糕的选择需要避免:

  • 在循环内追加或连接:这是低效且容易出错的,因为它会重复重新分配内存并可能导致对象列。
  • 创建一个空的NaNs 的 DataFrame: 这种方法也会创建对象列并需要手动索引

结论

要有效地用值填充 DataFrame,最好将数据累积在列表中,然后使用 pd.DataFrame(data) 初始化 DataFrame。这种方法高效、灵活且方便,使其成为使用 pandas DataFrame 的首选方法。

以上是如何高效地迭代填充 Pandas DataFrame?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn