2017-08-16 100 views
0

我有一个数据帧(DF)2列(ID和速率),它看起来像和数据框柱:包含不同的数据类型

id   rate  
0   #NAME? 
1   #NAME? 
2   #NAME? 
3   #NAME? 
4   #NAME? 
5   #NAME? 
6   #NAME? 
7   #NAME? 
8   #NAME? 
9    0.5 
10   #NAME? 
:   : 
211  0.25 
212  0.00 
213  #NAME? 
214  1.00 
215  #NAME? 

正如你可以看到rate列有不止一个键入和我试图总结非#NAME?费率列中的条目。我曾尝试:

df = pd.read_csv(full_path, header=0, usecols=[0,8], dayfirst=True,index_col=[0], names=['id', 'rate']) 
       print(df) 
       sumRate = sumRate + df['rate'].sum() 

,但我得到返回以下异常:

TypeError: unsupported operand type(s) for +: 'int' and 'str' 

我不确定如何总结浮动值只可惜的数据格式,我拉入数据 - 框架不在我的控制之下。如果任何人可以帮助它将不胜感激。

感谢

回答

1

我认为你需要to_numericerror='coerce'参数转换不是数字来NaN,然后再和:

print (pd.to_numeric(df['rate'], errors='coerce')) 
0  NaN 
1  NaN 
2  NaN 
3  NaN 
4  NaN 
5  NaN 
6  NaN 
7  NaN 
8  NaN 
9  0.50 
10  NaN 
11  NaN 
12 0.25 
13 0.00 
14  NaN 
15 1.00 
16  NaN 
Name: rate, dtype: float64 

sumRate = pd.to_numeric(df['rate'], errors='coerce').sum() 
print (sumRate) 
1.75