Как открыть файл Excel, записать данные в столбец из столбца данных, сохранить как новый файл - PullRequest
0 голосов
/ 11 февраля 2019

У меня есть файл Excel, который содержит столбец с заголовком «Оригинальный перевод».У меня также есть DataFrame со столбцом «Оригинальный перевод - {язык}», основанный на языке, который я использую, и некоторых манипуляциях.

Моя цель - открыть файл Excel, написать поверх столбца с заголовком «Оригинальный перевод» со всеми данными из моего столбца DataFrame «Оригинальный перевод - {язык}», сохранить исходное форматирование файла Excel исохранить в новую папку вывода.

Вот код, который у меня есть:

def output_formatted_capstan_file(df, original_file, country, language):
    # this is where you generate the file:
    # https://stackoverflow.com/questions/20219254/how-to-write-to-an-existing-excel-file-without-overwriting-data-using-pandas
    try:
        print(original_file)
        book = load_workbook(original_file)
        writer = pd.ExcelWriter(original_file, engine='openpyxl')
        writer.book = book
        df.to_excel(writer, ['Original Translation - {}'.format(language)])
        writer.save()
    except:
        print('Failed')

1 Ответ

0 голосов
/ 11 февраля 2019

Я бы подошел к этому, используя следующий метод.

1) Импортируйте файл excel с помощью такой функции, как pandas.read_excel, перенося данные из Excel в информационный кадр.Я назову это exceldf

2) Объединить этот фрейм данных с данными, которые у вас уже есть в Фрейме данных Pandas.Я позвоню в ваш существующий переведенный фрейм данных translateddf

3) Переупорядочиваем недавно объединенный фрейм данных newdf, а затем экспортируем данные.Дополнительные параметры для переупорядочения показаны здесь: переупорядочение фрейма данных

4) Экспорт данных в Excel.Я оставлю вас, чтобы интегрировать его в ваш исходный код.Чтобы получить общий ответ на вопрос, другие могут захотеть взглянуть на встроенные опции Pandas здесь to_excel

Пример кода

import pandas

# Read in the Excel file
exceldf = pandas.read_excel(open('your_xls_xlsx_filename'), sheetname='Sheet 1')

# Create a new dataframe with your merged data, merging on 'key1'.
# We then drop the column of the original translation, as it should no longer be needed
# I've included the rename argument in case you need it.
newdf = exceldf.merge(translateddf, left_on=['key1'], \
                right_on=['key1']) \
.rename(columns={'Original Translation {language}': 'Original Translation {language}'}) \
.drop(['Original Translation'], axis=1)

# Re-order your data. 
# Note that if you renamed anything above, you have to update it here too
newdf = newdf[['0', '1', '2', 'Original Translation {language}']]

# An example export, that uses the generic implementation, not your specific code
pandas.newdf.to_excel("output.xlsx")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...