直接将表放入pandas DataFrame时出现错误“OverflowError:long int太大而无法转换”。这似乎是由于表中包含大量数字,但尝试https://www.pythonanywhere.com/try-ipython/时没有错误。我添加了一个解决方法,将值转换为float,然后THEN创建了DataFrame。
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)
有更好的方法吗?其他人指出,他们没有任何溢出错误。这是python 2.7
答案 0 :(得分:2)
默认情况下,pandas会尝试读取和理解您的数据,并将其转换为适当的数据类型。在您的情况下,它尝试将数据加载到np.float64
个对象中。但是,您的数据显然太大了。
一种解决方法是在创建数据框时指定dtype=object
。
df = pd.DataFrame(table, dtype='object')
df
one two
0 1 2
1 11 22
2 1111111111111111111111111111111111111111111111... 222
请注意,这样做会杀死速度和效率的所有可能性,因为object
的使用速度非常慢。我假设你准备好了这个,处理这种性质的数据。