熊猫:保存到excel编码问题

jjj*_*jjj 7 python excel encoding utf-8 pandas

我有一个类似于这里提到的问题,但没有一个建议的方法适合我.

我有一个中等大小的utf-8.csv文件,有很多非ascii字符.我正在通过其中一个列中的特定值拆分文件,然后我想将每个获取的数据帧保存为保留字符的.xlsx文件.

这不起作用,因为我收到一个错误:

UnicodeDecodeError: 'ascii' codec can't decode byte 0xff in position 7: ordinal not in range(128)
Run Code Online (Sandbox Code Playgroud)

这是我尝试过的:

  1. xlsxwriter明确使用引擎.这似乎没有任何改变.
  2. 定义一个函数(下面)来改变编码并丢弃坏字符.这也没有改变任何东西.

    def changeencode(data):
    cols = data.columns
    for col in cols:
    if data[col].dtype == 'O':
        data[col] = data[col].str.decode('utf-8').str.encode('ascii', 'ignore')
    return data   
    
    Run Code Online (Sandbox Code Playgroud)
  3. 用手将所有进攻性的角色改为其他人.仍然没有效果(在此更改后获得引用的错误).

  4. 将文件编码为utf-16(我相信,这是正确的编码,因为我希望之后能够从excel中操作文件)也无济于事.

我相信问题出在文件本身(因为2和3),但我不知道如何绕过它.我很感激任何帮助.文件的开头粘贴在下面.

"Submitted","your-name","youremail","phone","miasto","cityCF","innemiasto","languagesCF","morelanguages","wiek","partnerCF","messageCF","acceptance-795","Submitted Login","Submitted From","2015-12-25 14:07:58 +00:00","Zózia kry?","test@tes.pl","4444444","Wroc?aw","","testujemy polskie znaki","Polski","testujemy polskie znaki","44","test","test","1","Justyna","99.111.155.132",
Run Code Online (Sandbox Code Playgroud)

编辑

一些代码(其中一个版本,没有拆分部分):

import pandas as pd
import string
import xlsxwriter

df = pd.read_csv('path-to-file.csv')

with pd.ExcelWriter ('test.xlsx') as writer:
                df.to_excel(writer, sheet_name = 'sheet1',engine='xlsxwriter')
Run Code Online (Sandbox Code Playgroud)

jjj*_*jjj 6

大概这是pandas我当时使用的版本中的一个错误。现在,pandasver。0.19.2,下面的代码可以从问题中保存csv,而不会遇到任何麻烦(并具有正确的编码)。
注意:openpyxl模块必须安装在系统上。

import pandas as pd
df = pd.read_csv('Desktop/test.csv')
df.to_excel('Desktop/test.xlsx', encoding='utf8')
Run Code Online (Sandbox Code Playgroud)