2016-08-12 62 views
2

我试图做的事:df['Num_Detections'] = df['Num_Detections'].astype(int)大熊猫无效字面长()基数为10的错误

,我得到以下错误:

ValueError: invalid literal for long() with base 10: '12.0'

我的数据外表看起来如下:

>>> df['Num_Detections'].head() 
Out[6]: 
sku_name 
DOBRIY MORS GRAPE-CRANBERRY-RASBERRY 1L  12.0 
AQUAMINERALE 5.0L       9.0 
DOBRIY PINEAPPLE 1.5L      2.0 
FRUKT.SAD APPLE 0.95L      154.0 
DOBRIY PEACH-APPLE 0.33L     71.0 
Name: Num_Detections, dtype: object 

任何想法如何正确地进行转换?

感谢您的帮助。

回答

4

有一些值,它不能被转换成int

您可以使用to_numeric并获得NaN这里是有问题的值:

df['Num_Detections'] = pd.to_numeric(df['Num_Detections'], errors='coerce') 

如果需要检查行有问题的值,用面膜使用boolean indexingisnull

print (df[ pd.to_numeric(df['Num_Detections'], errors='coerce').isnull()]) 

样品:

df = pd.DataFrame({'Num_Detections':[1,2,'a1']}) 

print (df) 
    Num_Detections 
0    1 
1    2 
2    a1 

print (df[ pd.to_numeric(df['Num_Detections'], errors='coerce').isnull()]) 
    Num_Detections 
2    a1 

df['Num_Detections'] = pd.to_numeric(df['Num_Detections'], errors='coerce') 
print (df) 
    Num_Detections 
0    1.0 
1    2.0 
2    NaN 
+0

正是这个问题不能直接转换为int的字符串值。 –

+0

是的,最好的办法是先检查值。然后选择一个或另一个解决方案。 – jezrael

+0

@ayhan - 没问题,我可以删除我的编辑。 – jezrael

相关问题