Панды генерировать несколько файлов xlsx из CSV - PullRequest
0 голосов
/ 25 октября 2018

Я пытаюсь сгенерировать несколько файлов Excel из одного CSV-файла, но после генерации нескольких файлов получается ошибка ниже:

UnicodeDecodeError: кодек «ascii» не может декодировать байт 0xc3 в позиции 8: ординалне в диапазоне (128)

ошибка возникает после генерации нескольких файлов, я не уверен, если какой-либо конкретный файл или какие-либо проблемы в коде, пожалуйста, помогите

код, как показано ниже:

 #!/usr/bin/env python
# coding: utf-8


import pandas as pd
import pandas.io.formats.excel
pandas.io.formats.excel.header_style = None


class AdvertiserList(object):

    def __init__(self, input_file):

        self.input_file = input_file
        self.file_csv = None
        self.writer = None
        self.path = None

    def read_csv(self):
        file_csv = pd.read_csv(self.input_file)
        file_csv_br = file_csv[file_csv['Market'] == 'BR']
        file_csv = file_csv.drop(file_csv_br.index, axis=0)
        self.file_csv = file_csv

    def generate_multiple_file(self):
        df_by_market = self.file_csv.groupby('Market')
        self.path = "C://Adops-Git//Files//"
        for(market, market_df) in df_by_market:
            self.writer = pd.ExcelWriter(self.path + "{}.xlsx".format(market), engine="xlsxwriter")
            # file_name = self.writer
            market_df.to_excel(self.writer, index=False)
            self.writer.save()
            self.writer.close()

    def main(self):
        self.read_csv()
        self.generate_multiple_file()


if __name__ == "__main__":
    object_advertiser = AdvertiserList('C://Adops-Git//Files//Account_&_Advertisers_List_data.csv')
    object_advertiser.main()

1 Ответ

0 голосов
/ 25 октября 2018

просто попробуйте

market_df.to_excel(self.path + "{}.xlsx".format(market), index=False)

напрямую и используйте программу записи xlsx по умолчанию, которая поддерживает Юникод изначально

также, из комментариев вы можете использовать устаревшую версию панд, если вы неу него есть опция аргумента кодирования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...