2017-10-04 18 views
0

將表直接放入熊貓DataFrame中時出現「OverflowError:long int太大而無法轉換」錯誤。這似乎是由於表中包含大量數字,但在https://www.pythonanywhere.com/try-ipython/上嘗試沒有錯誤。我已經添加了一種解決方法將值轉換爲浮點數,然後創建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

回答

2

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

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

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

注意,這樣做殺死速度和效率的所有可能性,因爲object s爲非常緩慢的工作。我假設你已經爲此做好了準備,使用這種性質的數據。

+0

謝謝!理想情況下,我們可以只在特定的列上指定dtype,但似乎仍然是一個問題https://github.com/pandas-dev/pandas/issues/4464 –

相關問題