从Pandas转Polars:Django查询结果转Polars DataFrame失败问题
Django查询结果导入Polars与Pandas的差异及解决方法
核心差异原因
Pandas的DataFrame构造器可以直接迭代Django的ValuesQuerySet(values()返回的对象),自动将每个字典元素的键解析为列名,值对应列数据。但Polars的默认DataFrame构造器不会自动处理这种字典迭代器,它会把整个QuerySet当成单列数据,每个元素是完整字典,导致无法正确展开成多列结构。
解决方法
方法1:将QuerySet转为列表后传入Polars
把ValuesQuerySet转成列表,Polars就能正确识别字典的键值对并生成对应列:
cf = Cashflow.objects.filter(acct=acct).values() df = pl.DataFrame(list(cf))
方法2:使用Polars的from_dicts方法
Polars专门提供了from_dicts方法来处理字典迭代器,直接传入QuerySet即可:
cf = Cashflow.objects.filter(acct=acct).values() df = pl.from_dicts(cf)
总结差异点
- Pandas对字典迭代器的兼容性更强,构造器会自动解析结构
- Polars需要显式处理字典迭代器,要么转成列表,要么用专门的
from_dicts方法
内容的提问来源于stack exchange,提问作者diogenes
相关产品推荐
相关产品推荐

