python pandas 读取EXCEL
各位大神、小伙伴...你们遇到下面这种情况没?怎样解决的?
谢谢!!
在读取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 CountDtype
--------- -------------------
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
方便提供下文档吗
有没有试着全部改用utf-8呢 可能是编码问题? 尝试改成encoding = "utf-8" 试试? 本帖最后由 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库跑一下编码 encoding='ansi'
encoding='utf-8_sig'
大概率就OK 了 你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的) zohoChou 发表于 2022-3-17 17:12
你read_csv的时候用编码为gbk了吗???
pandas内部默认的应该是utf-8吧,控制台能输出只是因为储存的控制 ...
我用的pd.read_excel,好像没有encoding这个参数 蓝风 发表于 2022-3-17 16:55
encoding='ansi'
encoding='utf-8_sig'
大概率就OK 了
用过utf-8出来是乱码,按照你的方式加个sig就可以了,还是第一次知道sig这玩意,谢谢大家,又学到了一点:lol 2014晴天 发表于 2022-3-17 16:09
#### 报错信息:
**UnicodeEncodeError: 'gbk' codec can't encode character '\xa0' in position 15: ...
先了解一下chardet库,以前没用过,谢谢你了{:1_893:}
页:
[1]
2