Pandas报错处理: Columns (6) have mixed types

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

DtypeWarning: Columns (6) have mixed types. Specify dtype option on import or set low_memory=False.
意思就是:第6列的数据类型不一样。
调试进去看了看,发现pandas在读取的时候确实把同一列数据中同一
个数值识别为不同的类型,比如:2000行第3列值为0的数据识别为Int类型,
而在4000行第3列值为0的数据识别为str类型。
两种解决方法:

1.设置read_csv的dtype参数,指定字段的数据类型

pd.read_csv(sio, dtype={"user_id": int, "username": object})

2.设置read_csv的low_memory参数为False

 pd.read_csv(sio, low_memory=False})

pandas读取csv文件默认是按块读取的,即不一次性全部读取;
另外pandas对数据的类型是完全靠猜的,所以pandas每读取一块数据就对csv字段的数据类型进行猜一次,所以有可能pandas在读取不同块时对同一字段的数据类型猜测结果不一致。
low_memory=False 参数设置后,pandas会一次性读取csv中的所有数据,然后对字段的数据类型进行唯一的一次猜测。这样就不会导致同一字段的Mixed types问题了。
但是这种方式真的非常不好,一旦csv文件过大,就会内存溢出;所以推荐用第1中解决方案。

pandas 更改数据类型:
选中列名,设置type

df[['two', 'three']] = df[['two', 'three']].astype(float)
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值