J'essaie de faire: df['Num_Detections'] = df['Num_Detections'].astype(int)
Et j'obtiens l'erreur suivante:
ValueError: littéral non valide pour long () avec la base 10: '12 .0 '
Mes données semblent être les suivantes:
>>> 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
Une idée de comment faire la conversion correctement?
Merci pour l'aide.
Il existe une valeur qui ne peut pas être convertie en int
.
Vous pouvez utiliser to_numeric
et obtenez NaN
où est la valeur problématique:
df['Num_Detections'] = pd.to_numeric(df['Num_Detections'], errors='coerce')
Si vous avez besoin de vérifier les lignes avec des valeurs problématiques, utilisez boolean indexing
avec masque avec isnull
:
print (df[ pd.to_numeric(df['Num_Detections'], errors='coerce').isnull()])
Échantillon:
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