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

如何仅使用Polars将列表元素追加至DataFrame中?

如何仅用Polars实现向DataFrame追加行数据?

需求说明

需要通过for循环将列表中的元组元素作为行,追加到Polars DataFrame中,实现与示例中Pandas代码相同的效果。

初始代码

import numpy as np
import pandas as pd
import polars as pl

add_list = [(10, 100, 'd'), (20, 20, 'D')]
df = pl.DataFrame({"a": [1, 2, 3], "b": [6, 7, 8], "c": ["a", "b", "c"]})

Pandas实现参考

df_pd = df.to_pandas()

for d in add_list:
    ser_pd = pd.Series(data=d, index=df_pd.columns)
    df_pd = pd.concat([df_pd, ser_pd.to_frame().T], ignore_index=True)
    
print(pl.from_pandas(df_pd))

执行结果

shape: (5, 3)
┌─────┬─────┬─────┐
│ a   ┆ b   ┆ c   │
│ --- ┆ --- ┆ --- │
│ i64 ┆ i64 ┆ str │
╞═════╪═════╪═════╡
│ 1   ┆ 6   ┆ a   │
│ 2   ┆ 7   ┆ b   │
│ 3   ┆ 8   ┆ c   │
│ 10  ┆ 100 ┆ d   │
│ 20  ┆ 20  ┆ D   │
└─────┴─────┴─────┘

基于Numpy的Polars实现(已有方案)

df2 = df

for d in add_list:
    arr = np.asarray(d).reshape(-1, len(d))
    df2 = pl.concat([df2, pl.DataFrame(arr, schema=df2.schema, orient="row")])

纯Polars实现方案

循环追加方式

无需依赖Numpy,直接构造单行DataFrame进行追加:

df3 = df

for d in add_list:
    # 将元组包装为列表,直接生成单行DataFrame,指定schema匹配原表
    new_row = pl.DataFrame([d], schema=df3.schema)
    df3 = pl.concat([df3, new_row])

print(df3)

批量高效处理方式

如果不需要严格使用for循环,推荐批量转换后一次性拼接,性能更优(避免多次concat的对象创建开销):

# 将待追加的所有元组直接转为DataFrame,再与原表拼接
new_rows_df = pl.DataFrame(add_list, schema=df.schema)
df4 = pl.concat([df, new_rows_df])

print(df4)

内容的提问来源于stack exchange,提问作者beta green

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 01:17:29