#python #excel #pandas #openpyxl
#python #excel #панды #openpyxl
Вопрос:
Я собрал данные из Интернета, и после некоторой операции я получил такой фрейм данных;
0 1 2 3
3 BAFRA 0 10000 0.114705
4 BAFRA 100001 300000 0.114705
1 BAFRA 300001 1000000 0.114705
0 BAFRA 1000001 10000000 0.114705
2 BAFRA 10000001 100000000 0.114705
5 BAFRA 100000000 100000001 0.114705
Я хочу взять третий столбец и заменить его в существующем файле Excel на определенном листе и в определенный столбец и строку.
Я использую этот код;
with pd.ExcelWriter(...Gas Settlement Aug20.xlsx",engine="openpyxl") as writer:
df[3].to_excel(writer, sheet_name='Unit Prices',header= False, index = False, startcol=12,startrow=24)
import openpyxl
wb = openpyxl.load_workbook(...Gas Settlement Aug20.xlsx")
ws = wb['Unit Prices']
wb.save(...Gas Settlement Aug20.xlsx")
Но он удаляет всю информацию, я попробовал режим «a», но на этот раз он создает новый лист.
Есть ли какой-нибудь способ заменить мои старые данные новыми…
Ответ №1:
Кажется, вы используете сразу два разных подхода: pd.ExcelWriter и openpyxl. Просто следуя приведенному вами образцу, вы можете использовать openpyxl, подобный этому, для обновления вашего файла:
import openpyxl
wb = openpyxl.load_workbook("...Gas Settlement Aug20.xlsx")
ws = wb['Unit Prices']
startcol = 12
startrow = 24
for item in df[3]:
ws.cell(startrow, startcol).value = item
startrow =1
wb.save(...Gas Settlement Aug20.xlsx")
Но я предлагаю вам не использовать эту форму индексации с числами, потому что легко создавать ошибки и очень сложно найти эти ошибки. В зависимости от размера, даже чтение всего файла, повторное обновление и сохранение будет намного безопаснее и проще для отслеживания.
Комментарии:
1. Этот код проработан. Большое вам спасибо, индексирование с помощью number — это единственный способ, которым я знаю, что все еще пытаюсь улучшить свои навыки. Еще раз спасибо!!!