2016-08-03 66 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