pandas read_csv mix types WARNING

Columns (5) have mixed types.Specify dtype option on import or set low_memory=False.

这个应该是pandas在做dtype guessing产生的问题,具体到我这里是因为有个字段类似于int,但是有几个数值超过了int64的范围,相当于这个字段混合了int64和str,所以有这个错误,最好的方式是直接指定字段为str。

low_memory=False我也尝试了,也可以work。

但是有个奇怪的地方,出现warning后,相应字段的dtype还是dtype('O'),就是object,用iloc取数出来也是str的形式

In : df_0909.iloc[0,5]

Out : '20210426100185616'

但是当使用df_0909[df_0909['bill_no'].apply(lambda x:len(x)) > 17]

会报错TypeError: object of type 'int' has no len(),看起来apply是把有些元素当成了int来处理。

所以最好的办法还是自己指定好,对于这种有歧义的字段,不要让系统去做dtype guessing。



留言

熱門文章