从包含非常大数值的字典创建pandas dataframe时发生溢出错误

2024-05-16 23:38:05 发布

您现在位置:Python中文网/ 问答频道 /正文

当直接将一个表放入pandas DataFrame时,得到一个错误“overflowerr:long int too large to convert”。这似乎是由于表中包含了大量的数字,但是尝试https://www.pythonanywhere.com/try-ipython/没有错误。我添加了一个解决方法,将值转换为float,然后创建了数据帧。在

import pandas as pd
table = [{'two': 2, 'one': 1}, {'two': 22, 'one': 11}, 
    {'two': 222, 'one': 1111111111111111111111111111111111111111111111111111111111111111111111}]

# workaround for overflow error
for x, i in enumerate(table):
    table[x]['one']=float(table[x]['one'])

df = pd.DataFrame(table)

有更好的方法吗?其他人指出,他们没有得到任何溢出错误。这是python2.7


Tags: 方法dataframepandasfor错误tablefloatone
1条回答
网友
1楼 · 发布于 2024-05-16 23:38:05

默认情况下,pandas尝试读取和理解数据,并将其转换为适当的数据类型。在您的例子中,它试图将数据加载到np.float64对象中。但是,您的数据显然太大了。在

一种解决方法是在创建数据帧时指定dtype=object。在

df = pd.DataFrame(table, dtype='object')    
df
                                                 one  two
0                                                  1    2
1                                                 11   22
2  1111111111111111111111111111111111111111111111...  222 

请注意,这样做会降低速度和效率的所有可能性,因为objects的工作速度非常慢。我想你已经准备好了,使用这种性质的数据。在

相关问题 更多 >