2016-08-03 60 views
2

哪些錯誤的代碼?: 它返回一個警告:熊貓 - 據幀重新編制函數返回一個警告

警告(從警告模塊):文件 「C:\ Python27 \ LIB \站點包\ numpy \ core \ numeric.py「,第2515行 return bool(asarray(a1 == a2).all())FutureWarning:元素比較失敗;返回標代替,但在未來會 執行的elementwise比較

import pandas as pd 
import numpy as np 

Data1 = {'State':['Ohio','Ohio','Ohio','Nevada','Nevada'],'Year':[2000,2001,2002,2001,2002],'POP':[1.5,1.7,3.6,2.4,2.9]} 

Frame4 =pd.DataFrame(Data1) 
print('\n') 
print Frame4 

Frame5 = Frame4.reindex(['a','b','c','d','e']) 
print Frame5 

my o/p 
POP State Year 
0 1.5 Ohio 2000 
1 1.7 Ohio 2001 
2 3.6 Ohio 2002 
3 2.4 Nevada 2001 
4 2.9 Nevada 2002 

Warning (from warnings module): 
    File "C:\Python27\lib\site-packages\numpy\core\numeric.py", line 2515 
    return bool(asarray(a1 == a2).all()) 
FutureWarning: elementwise comparison failed; returning scalar instead, but in the future will perform elementwise comparison 
    POP State Year 
a NaN NaN NaN 
b NaN NaN NaN 
c NaN NaN NaN 
d NaN NaN NaN 
e NaN NaN NaN 

回答

0

,你正在試圖改變名稱索引軸必須使用rename代替reindex

Frame5 = Frame4.rename({0:'a', 1:'b', 2:'c', 3:'d', 4:'e'}) 
print(Frame5) 
    POP State Year 
a 1.5 Ohio 2000 
b 1.7 Ohio 2001 
c 3.6 Ohio 2002 
d 2.4 Nevada 2001 
e 2.9 Nevada 2002 

施加reindex的目的是使數據幀的指數在新的索引選擇邏輯。

默認情況下,在新的索引值沒有在數據幀相應的記錄被分配NaN

因此,當您將新索引邏輯指定爲list('abcde')時,它檢查了所有索引值,但由於先前的索引位於range(0,4)中,因此無法找到匹配項。所以,它返回Nans

0

試試這個:

Frame4 =pd.DataFrame(Data1) 
print('\n') 
print Frame4 

Frame4.index = ['a','b','c','d','e'] 
print Frame4 


    POP State Year 
0 1.5 Ohio 2000 
1 1.7 Ohio 2001 
2 3.6 Ohio 2002 
3 2.4 Nevada 2001 
4 2.9 Nevada 2002 


    POP State Year 
a 1.5 Ohio 2000 
b 1.7 Ohio 2001 
c 3.6 Ohio 2002 
d 2.4 Nevada 2001 
e 2.9 Nevada 2002 
+0

如果答案作品,請考慮upvoting它, – Merlin