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。
留言
張貼留言