You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何高效地向Polars DataFrame中批量追加多行?

在Polars中高效追加多行数据到DataFrame

Polars 是面向列的数据分析库,批量操作比单行操作高效得多。下面是几种实用的多行追加方法:

方法1:构造多行DataFrame后使用extend

直接创建包含所有待追加行的DataFrame,通过extend方法一次性合并,这是Polars中最推荐的批量追加方式:

import polars as pl

# 初始化空DataFrame
df_polars = pl.DataFrame({
    'abc': [],
    'def': [],
    'ghi': []
})

# 构造包含多行数据的新DataFrame
new_rows = pl.DataFrame({
    'abc': [None, 5, None],
    'def': [10.0, 20.0, 30.0],
    'ghi': [None, None, 15]
})

# 批量追加
df_polars = df_polars.extend(new_rows)

print(df_polars)

方法2:通过rows参数批量追加行

如果你的数据是以行的形式存储(比如列表的列表),可以直接通过extend的rows参数传入,Polars会自动匹配列名:

import polars as pl

df_polars = pl.DataFrame({
    'abc': [],
    'def': [],
    'ghi': []
})

# 多行数据:每个子列表代表一行
multi_rows = [
    [None, 10.0, None],
    [3, 20.0, None],
    [None, 30.0, 7]
]

# 批量追加
df_polars = df_polars.extend(rows=multi_rows)

print(df_polars)

方法3:预收集数据后一次性生成DataFrame(适合大量数据)

如果需要追加的数据量很大,建议先把所有数据收集到字典或列表中,最后一次性转换成DataFrame再合并,避免多次调用extend带来的性能损耗:

import polars as pl

# 初始化空DataFrame
df_polars = pl.DataFrame({
    'abc': [],
    'def': [],
    'ghi': []
})

# 预收集多行数据
data = {
    'abc': [None, 2, None, 8],
    'def': [10.0, 20.0, 30.0, 40.0],
    'ghi': [None, None, 5, 12]
}

# 合并到原DataFrame
df_polars = df_polars.extend(pl.DataFrame(data))

print(df_polars)

注意事项

  • 避免循环调用单行追加:Polars的extend是为批量操作设计的,循环单行追加会大幅降低性能,因为每次操作都需要重新构造列数据。
  • 确保追加的数据列名和原DataFrame一致:如果列名不匹配,Polars会自动补全None或者报错(取决于配置),建议提前对齐列结构。

内容的提问来源于stack exchange,提问作者Nayem Jaman Tusher

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 11:34:53