Python - Модификация существующего Excel с использованием Pandas и openpyxl - PullRequest
0 голосов
/ 14 марта 2019

У меня есть файл Excel (Celebrities.xlsx) с несколькими листами, и я пытаюсь изменить один лист с именем Relationships без изменения (или возможного удаления) других листов. Вот что я сделал.

import pandas as pd
from openpyxl import load_workbook
from openpyxl.utils.dataframe import dataframe_to_rows

# Name of the celebrity that I want to modify
celeb_name = 'Terence Stamp'

wb = load_workbook('Celebrities.xlsx')
ws = wb['Relationships']

df = pd.read_excel('Celebrities.xlsx', sheet_name='Relationships')

# This part is trivial, but basically I'm replacing every null cell in 'Link' column with the word 'empty' (of that particular celebrity)
df.loc[(df['Celebrity Name'] == celeb_name) & (df['Link'].isnull()), 'Link'] = 'empty'

for r in dataframe_to_rows(df, index=True, header=True):
    ws.append(r)

wb.save('new.xlsx')

Теперь скрипт выполняется без ошибок, и new.xlsx успешно создается, но когда я пытаюсь его открыть, он выдает мне эту ошибку:

Предупреждение о загрузке документа new.xlsx: данные не могут быть загружены полностью, потому что было превышено максимальное количество строк на листе.

И ничего не изменилось!

Я могу заверить, что эта часть кода работает отлично:

wb = load_workbook('Celebrities.xlsx')
ws = wb['Relationships']
wb.save('new.xlsx')

Полагаю, проблема в этой части кода:

for r in dataframe_to_rows(df, index=True, header=True):
    ws.append(r)

Но я не знаю, как это исправить.

1 Ответ

2 голосов
/ 14 марта 2019

Вы говорите в своем вопросе ничего не было изменено .Но это так.Ваш код проходит по циклу данных и добавляет новую строку к рабочему листу каждый раз через цикл.Предел составляет 1 048 576 строк, и Excel сообщает вам, что измененный лист превышает этот предел.

...