当前位置: 首页 > 知识库问答 >
问题:

如何过度应用"utf-8"在熊猫数据框中打开csv/txt文件?

滑弘扬
2023-03-14

我试图从特定文件路径的文本文件导入数据,但我得到错误'utf-8'编解码器不能解码字节0xa5在位置18:无效的开始字节

我的问题是,无论如何,我可以将“utf-8”编码应用于所有最终必须打开的文本文件(大约20个其他文件),以便防止上述错误?

代码:

import pandas as pd
filelist = [r'D:/file1',r'D:/file2']
print (len((pd.concat([pd.read_csv(item, names=[item[:-4]]) for item in filelist],axis=1))))

如果我做错了什么,我也愿意接受任何建议。

先谢谢你。

共有1个答案

燕昊东
2023-03-14

不知道在python中自动转换为utf-8编码的解决方案。

或者,您可以找出编码是什么,并相应地阅读它。然后以utf-8格式写入文件。

此解决方案对我的文件很有效(credit maxnoe)

import chardet
import pandas as pd

with open('filename.csv', 'rb') as f:
    result = chardet.detect(f.read())  # or readline if the file is large

pd.read_csv('filename.csv', encoding=result['encoding'])

别忘了pip安装chardet

如果您现在使用pd编写文件。对于_csv(),默认情况下使用utf-8编码

 类似资料:
  • 用熊猫打开德国csv文件的最佳方式是什么? 我有一个包含以下列的德语csv文件: 基准:格式为“DD.MM”的日期。YYYY' Umlaute:带有德语特有字符的德语名称 扎伦:格式为“000.000,00”的数字 我的预期产出是: 下面提供了示例数据(见文件)。 这将引发一个: 这不会引发错误,但与我期望的输出相差甚远: 日期是字符串,而不是日期时间 现在,我有四行代码,但仍然不起作用。最后一行

  • 我运行了以下脚本(https://github.com/FXCMAPI/FXCMTickData/blob/master/TickData34.py)并在末尾添加以下行以下载文件: 然后,我尝试使用pandas打开文件,如下所示: 然而,我得到的是: 为什么数据框是空的? 如果我在TextEdit上打开文件,前几行实际上如下所示:

  • 问题内容: 我正在编写一个脚本,以将带有标头的大.xlsx文件减少到一个csv中,然后根据标头名称仅写有所需列的新csv文件。 我得到的错误是最后一部分代码,它说 我确定我忽略了一些愚蠢的事情,但是我已经阅读了熊猫网站上的to_csv文档,但我仍然感到茫然。我知道我使用了不正确的to_csv参数,但我似乎无法理解我猜的文档。 任何帮助表示赞赏,谢谢! 问题答案: 选择特定列的方法是这样的-

  • 熊猫:当单元格内容为列表时,为列表中的每个元素创建一行 很好的问题和答案,但只处理一列和列表(在我的答案中,自定义函数将适用于多列,而且接受的答案是使用最耗时的,这是不建议的,检查更多信息,我什么时候应该在我的代码中使用pandas apply()?)

  • 问题内容: 要按单列过滤数据帧(df),如果我们考虑男性和女性的数据,则可以: 问题1-但是,如果数据跨越多年并且我只想看2014年的男性,该怎么办? 用其他语言,我可能会做类似的事情: (除了我要执行此操作,并在新的数据框对象中获取原始数据框的子集) 问题2。如何循环执行此操作,并为每个唯一的年份和性别集创建一个数据框对象(例如,2013-男,2013-女,2014-男和2014-女的df 问题

  • 问题内容: 我正在加载一个包含浮点和字符串数据混合的txt文件。我想将它们存储在可以访问每个元素的数组中。现在我正在做 这是输入文件的结构:。 现在,数据将作为唯一列导入。我如何划分它,以便分别存储不同的元素(所以我可以调用)?以及如何定义标题? 问题答案: 您可以使用: 添加您的代码,在引号之间留一个空格。因此,熊猫可以检测值之间的空格并按列排序。数据列用于命名您的列。