当使用astype从object到int32获取ValueError时,如何从数据帧中删除错误的行

时间:2017-10-25 10:50:13

标签: python pandas

它类似于analyticsmarket.com,但解决方案并没有解决我的问题。

我使用pandas的astype函数将字符串解析为int32格式的数据,但由于原始数据中存在一些异常值,因此会导致ValueError异常。

我想删除错误的行数据。

我的代码是:

df['DRIVEDIR'] = df['DRIVEDIR'].astype('int32')

df(一个小子集)是:

                                    DRIVEDIR 
PASSTIME                                                                       
2017-06-02 11:01:08.247000+08:00       3            
2017-06-02 11:00:55.710000+08:00       2            
2017-06-02 11:00:41.139000+08:00       鲁XXX              
2017-06-02 07:43:41.818000+08:00       2            
2017-06-02 11:04:21.317000+08:00       3            
2017-06-02 11:04:18.460000+08:00       2            
2017-06-02 11:04:13.159000+08:00       1  

我尝试使用df['DRIVEDIR'] = df['DRIVEDIR'].astype('int32',errors= 'ignore'),但它无法将dtype表单对象更改为int32,以后我无法处理它。所以,如何从数据框中删除错误的行当使用astype从object到int32获取ValueError时。

1 个答案:

答案 0 :(得分:0)

如我的评论所述,请使用pd.to_numeric。无效的项目被强制转换为NaN。然后,您可以将其过滤掉,然后转换为int

pd.to_numeric(df.DRIVEDIR, errors='coerce').dropna().astype(int)

2017-06-02    3
2017-06-02    2
2017-06-02    2
2017-06-02    3
2017-06-02    2
2017-06-02    1
Name: DRIVEDIR, dtype: int64