如何将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
相关产品推荐
相关产品推荐

