吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1783|回复: 14
收起左侧

[讨论] python pandas 读取EXCEL

[复制链接]
lizy169 发表于 2022-3-17 15:33
各位大神、小伙伴...
你们遇到下面这种情况没?怎样解决的?

谢谢!!
在读取Excel,计算后输出时,出现错误:
df.to_csv('****.csv', encoding='GBK')

  File "pandas\_libs\writers.pyx", line 55, in pandas._libs.writers.write_csv_rows
UnicodeEncodeError: 'gbk' codec can't encode character '\xa0' in position 15: illegal multibyte sequence

确定是这个表的其中一列“物料名称”的问题,不对这列进行计算,也不输出与这列相关的数据时,就不会报错
我手工查看了这列,没有发现这列数据有什么问题。


print(date.dtypes)date.info()

查看控制台如下:

物料名称         object
物料代码         object
当前计划状态       object
截止15日总计划    float64
已送货         float64
dtype: object
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 1324 entries, 0 to 1323
Data columns (total 5 columns):
#   Column    Non-Null Count  Dtype  
---  ------    --------------  -----  
0   物料名称      1238 non-null   object
1   物料代码      1323 non-null   object
2   当前计划状态    1321 non-null   object
3   截止15日总计划  1323 non-null   float64
4   已送货       1323 non-null   float64
dtypes: float64(2), object(3)
memory usage: 51.8+ KB

进程已结束,退出代码0


免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
XiaoZouYu + 1 + 1 转码试一下是否可行

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

PncB2INYyoKw0l9 发表于 2022-3-17 15:43
方便提供下文档吗
Romeo_Ahmed 发表于 2022-3-17 15:49
cykablyat 发表于 2022-3-17 16:03
可能是编码问题? 尝试改成encoding = "utf-8"    试试?
2014晴天 发表于 2022-3-17 16:09
本帖最后由 2014晴天 于 2022-3-17 16:23 编辑
报错信息:

UnicodeEncodeError: 'gbk' codec can't encode character '\xa0' in position 15: illegal multibyte sequence

初步结论:

这个报错信息这么明显,转码问题,character '\xa0'在gbk编码中无法转化。

解决方法(两类三种):
第一类---躲避法(非核心字符)
  • 1、在转换前需要将“\xa0”替换掉
    string.replace(u'\xa0', u' ')
  • 2、在gbk解码时忽略掉不能解码的数据
    content.encode("gbk", 'ignore').decode("gbk", "ignore")
第二类---直面法(核心字符)
  • 1、打开时就不转unicode字符
    encoding='utf-8'
    注:因为没有拿到源文件,不知道是什么编码,根据经验可以尝试gb2312,utf-8_sig,utf-16_sig,最好还是用chardet库跑一下编码

免费评分

参与人数 1热心值 +1 收起 理由
lizy169 + 1 谢谢@Thanks!

查看全部评分

蓝风 发表于 2022-3-17 16:55
encoding='ansi'
encoding='utf-8_sig'
大概率就OK 了

免费评分

参与人数 1吾爱币 +1 收起 理由
lizy169 + 1 谢谢@Thanks!

查看全部评分

zohoChou 发表于 2022-3-17 17:12
你read_csv的时候用编码为gbk了吗???
pandas内部默认的应该是utf-8吧,控制台能输出只是因为储存的控制台默认gbk,又把utf-8转换成了gbk吧…………

严重建议检查一开始的read_csv()

xls_x = pd.read_csv(
    "D:\\Documents\\学校事务\\Python\\compare\\新建文本文档.csv",encoding="gbk")

反正我这么写就没问题(windows的默认编码被我改成了utf,控制台默认utf,但是excel默认还是gbk的)

免费评分

参与人数 1热心值 +1 收起 理由
lizy169 + 1 谢谢@Thanks!

查看全部评分

 楼主| lizy169 发表于 2022-3-18 09:29
zohoChou 发表于 2022-3-17 17:12
你read_csv的时候用编码为gbk了吗???
pandas内部默认的应该是utf-8吧,控制台能输出只是因为储存的控制 ...

我用的pd.read_excel,好像没有encoding这个参数
 楼主| lizy169 发表于 2022-3-18 09:42
蓝风 发表于 2022-3-17 16:55
encoding='ansi'
encoding='utf-8_sig'
大概率就OK 了

用过utf-8出来是乱码,按照你的方式加个sig就可以了,还是第一次知道sig这玩意,谢谢大家,又学到了一点
 楼主| lizy169 发表于 2022-3-18 09:44
2014晴天 发表于 2022-3-17 16:09
[md]#### 报错信息:
**UnicodeEncodeError: 'gbk' codec can't encode character '\xa0' in position 15: ...

先了解一下chardet库,以前没用过,谢谢你了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 14:44

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表