2017-04-19 68 views
1

我試圖廣場Python中的數據幀的元素,但得到一個奇怪的答案,因爲它不涉及負號無法使用數據框的元素的平方在熊貓

這是我的數據框:

  Risk_Weight weighted_sum_sens 
0   45    225000 
1   45   -1800000 
2   45    450000 
3   48    480000 
4   99    495000 
5   10    100000 
6   10   -100000 
7   49    245000 
8   47   -235000 



In[29]:vec = (ws.weighted_sum_sens**2) 
vec 
Out[29]: 
0 -914607552 
1 1594658816 
2  636537088 
3 -1528233984 
4  211864128 
5 1410065408 
6 1410065408 
7 -104542144 
8 -609574848 
Name: weighted_sum_sens, dtype: int32 
+0

編輯你的問題:

您可以使用更大的int類型。請用適當的英文來做。 – gonczor

+0

這適用於我,發佈原始數據,代碼重新創建您的DF以便他人重現。另外你的熊貓和numpy版本是什麼? 'df.info()'顯示什麼? – EdChum

回答

2

這是溢出錯誤。該欄的dtypeint32,該欄只能保存-21474836482147483647(即-2**312**31 - 1)之間的整數。並且,例如,第一個值225000**2 == 50625000000。看看this section of the docs。讓我們知道什麼樣的代碼部分引起麻煩,你還指望什麼數據,你會得到什麼

>>> df**2 
    Risk_Weight weighted_sum_sens 
0   2025   -914607552 
1   2025   1594658816 
2   2025   636537088 
3   2304  -1528233984 
4   9801   211864128 
5   100   1410065408 
6   100   1410065408 
7   2401   -104542144 
8   2209   -609574848 
>>> df['weighted_sum_sens'] = df.weighted_sum_sens.astype(np.int64) 
>>> df**2 
    Risk_Weight weighted_sum_sens 
0   2025  50625000000 
1   2025  3240000000000 
2   2025  202500000000 
3   2304  230400000000 
4   9801  245025000000 
5   100  10000000000 
6   100  10000000000 
7   2401  60025000000 
8   2209  55225000000 
>>> 
+0

謝謝。它解決了我的問題。非常感謝 :) –

相關問題