2016-08-12 13 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には変換できない値があります。 isnullとマスクでboolean indexingを使用し、問題のある値を持つ

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

もし必要性のチェックの行::

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

サンプル:

あなたはto_numericを使用し、問題の価値がどこにあるNaNを得ることができます

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

はい、最良の方法は最初に値をチェックすることです。次に、1つまたは別のソリューションを選択します。 – jezrael

+0

@ayhan - 問題はありません。編集を削除できます。 – jezrael

関連する問題