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

如何将Polars Row对象转为字典?迭代DataFrame行遇问题

解决Polars遍历行获取字典的问题

问题原因

你遇到的报错是因为Polars版本迭代中的方法名变更:旧版的iter_rows(named=True)在部分版本中被调整为iterrows,但后者默认返回Polars的Row对象而非原生字典。

解决方案

方案1:将Row对象转为字典

Row对象自带to_dict()方法,直接调用就能转成Python原生字典:

import polars as pl

df = pl.DataFrame({
    'a': [1, 2, 3],
    'b': [4, 5, 6]
})
for row in df.iterrows(named=True):
    row_dict = row.to_dict()
    print(type(row_dict))  # 输出 <class 'dict'>
    print(row_dict['a'])
    print(row_dict['b'])

方案2:直接获取字典列表

如果不需要逐行迭代,也可以用to_dicts()方法一次性把整个DataFrame转为字典列表,再遍历:

import polars as pl

df = pl.DataFrame({
    'a': [1, 2, 3],
    'b': [4, 5, 6]
})
for row_dict in df.to_dicts():
    print(type(row_dict))
    print(row_dict)

方案3:适配新版Polars的iter_rows方法

如果你的Polars版本是0.17.0及以上,iter_rows(named=True)已经恢复支持,直接调用就能返回字典:

import polars as pl

df = pl.DataFrame({
    'a': [1, 2, 3],
    'b': [4, 5, 6]
})
for row_dict in df.iter_rows(named=True):
    print(type(row_dict))
    print(row_dict)

若调用iter_rows报错,说明版本过低,可升级Polars:

pip install --upgrade polars

获取Row对象的列名/键

如果需要直接操作Row对象获取列名,可通过df.columns拿到整个DataFrame的列名列表,再结合Row对象取值:

import polars as pl

df = pl.DataFrame({
    'a': [1, 2, 3],
    'b': [4, 5, 6]
})
columns = df.columns
for row in df.iterrows(named=True):
    for col in columns:
        print(f"{col}: {row[col]}")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 05:39:57