我正在尝试做: df['Num_Detections'] = df['Num_Detections'].astype(int)
df['Num_Detections'] = df['Num_Detections'].astype(int)
我得到以下错误:
ValueError:以10为底的long()无效文字:‘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
知道如何正确进行转换吗?
感谢帮助。
有一些值,无法将其转换为int。
int
您可以使用to_numeric并获得NaN存在问题的价值:
to_numeric
NaN
df['Num_Detections'] = pd.to_numeric(df['Num_Detections'], errors='coerce')
如果需要检查值有问题的行,请boolean indexing与mask配合使用isnull:
boolean indexing
isnull
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