我正在尝试的是读取csv以生成数据帧---在列中进行更改---再次将更改的值更新/反映为相同的csv(以生成csv)-再次尝试读取该csv以生成另一个数据帧…出现错误
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe7 in position 7: invalid continuation byte
我的代码是
import pandas as pd
df = pd.read_csv("D:\ss.csv")
df.columns #o/p is Index(['CUSTOMER_MAILID', 'False', 'True'], dtype='object')
df['True'] = df['True'] + 2 #making changes to one column of type float
df.to_csv("D:\ss.csv") #updating that .csv
df1 = pd.read_csv("D:\ss.csv") #again trying to read that csv
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe7 in position 7: invalid continuation byte
因此,请建议如何避免错误,并能够再次读取csv到一个数据帧。
我知道在读和写csv的时候,我遗漏了“encode=some codec type”或“decode=some type”。
但我不知道该怎么改,所以需要帮助。
一个简单的解决方案是,您可以像Sublime Text一样在编辑器中打开csv文件,并用“utf-8”编码保存它。然后我们可以很容易地通过熊猫读取文件。
已知编码
如果知道要读入的文件的编码, 你可以用
以下是可能的编码: https://docs.python.org/3/library/codecs.html#standard-encodings
未知编码
如果您不知道编码,可以尝试使用chardet,但是这不能保证工作正常。更多的是猜测。
这个错误是在第一次读取数据时发生的,还是在第二次读取数据时发生的?我的猜测是它实际上发生在数据的第一次读取上,因为CSV的编码不是UTF-8。
尝试在记事本++、Excel或LibreOffice中打开CSV文件。您的数据源中是否有ç(C with cedilla)字符?如果是这样,那么您看到的0xE7字节可能是用拉丁语-1或Windows-1252(在Python中称为“cp1252”)编码的ç。
查看Pandas
read_csv()
函数的the documentation,我看到它有一个encoding
参数,它应该是您希望CSV文件包含的编码的名称。因此,尝试将encoding="cp1252"
添加到read_csv()
调用中,如下所示:请注意,我在文件名前面添加了字符
r
,因此它将被视为“原始字符串”,并且反斜杠不会被特别处理。这样,当您将文件名从ss.csv
更改为new-ss.csv
时,您就不会感到惊讶,其中的字符串D:\new-ss.csv
将被读取为D
、:
、换行符、e
、w
等无论如何,在第一个
read_csv()
调用中尝试该编码参数,看看它是否有效。(这只是猜测,因为我不知道你的实际数据。如果数据文件不是私有的,也不是太大,那么试着发布数据文件,这样我们就可以看到它的内容——这比猜测要好得多。)相关问题 更多 >
编程相关推荐