计算错误:从数据创建 Polars DataFrame 时无法附加值

问题描述 投票:0回答:1

尝试从数据创建 Polars DataFrame 时遇到 ComputeError。错误信息是:

ComputeError: could not append value: 1.41431 of type: f64 to the builder; make sure that all rows have the same schema or consider increasing infer_schema_length it might also be that a value overflows the data-type's capacity
这是我的代码的相关部分: 可重现的 json 示例:test.json

import json
import pandas as pd
import polars as pl
response = requests.get('https://github.com/user-attachments/files/16026717/test.json')
res = json.loads(response.text)

df_pd = pd.DataFrame(res) # Creating DataFrame using Pandas (works fine)
df = pl.DataFrame(res) # Creating DataFrame using Polars (raises the error)

我期望 pl.DataFrame(res) 行的工作方式与 pd.DataFrame(res) 行类似,但它会引发上述错误。我还注意到,Polars 的已关闭的 GitHub 问题中讨论了类似的错误,但尽管使用了最新版本的 Polars (0.20.31),我仍然遇到此错误。

有人遇到过类似的问题或对如何解决这个问题有任何见解吗?

我检查了res中值的类型,它们似乎是一致的。我还尝试了其他方法,例如将浮点数四舍五入到小数点后 5 位或增加

infer_schema_length
,但它们不起作用,我再次遇到相同的错误。

dataframe python-polars
1个回答
0
投票

通过将

infer_schema_length
设置为
None
解决了问题,感谢jqurious

pl.DataFrame(res, infer_schema_length=None)

似乎是因为

infer_schema_length
的默认值为100而引发了错误。但是,在我们的数据中,只有当行大于100时才能检测到该列的类型。 我在GitHub问题中建议修改错误描述,以便用户可以通过将参数设置为
None
来轻松调试他们的代码。

© www.soinside.com 2019 - 2024. All rights reserved.