簡體   English   中英

從包含非常大的數值的字典創建熊貓數據框時發生溢出錯誤

[英]Overflow error when creating pandas dataframe from dictionaries containing very large numeric values

直接將表放入pandas DataFrame時,出現錯誤“ OverflowError:long int太大而無法轉換”。 這似乎是由於表中包含的數字很大,但是嘗試https://www.pythonanywhere.com/try-ipython/時沒有錯誤。 我添加了一種解決方法,將值轉換為float,然后創建了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

默認情況下,pandas嘗試讀取和理解您的數據,並將其轉換為適當的數據類型。 在您的情況下,它試圖將數據加載到np.float64對象中。 但是,您的數據顯然太大。

一種解決方法是在創建數據框時指定dtype=object

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

請注意,這樣做會消除速度和效率的所有可能性,因為object的使用非常緩慢。 我認為您已經准備好使用這種性質的數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM