Как вставить серию Pandas в определенный столбец существующего файла Excel (без удаления содержимого из этого файла)? - PullRequest
0 голосов
/ 16 сентября 2018

Я импортировал следующие данные из Excel с пандами:

import pandas as pd
sht = pd.read_excel(path, 'Table', index_col=None, header=None, usecols = "A:C")
sht.head()

|-------+------------+----------|
| jon   |   tyrion   | daenerys |
| sansa |   cersei   |  rhaegar |
| arya  |   jaime    |        0 |
| bran  |   tywin    |        0 |
| robb  |   0        |        0 |
| 0     |   0        |        0 |
|-------+------------+----------|

Затем я создал следующую серию (D) в пандах:

D = pd.Series((sht[sht!=0]).values.flatten()).dropna().reset_index(drop=True)
D

|----------|
| jon      |
| tyrion   |
| daenerys |
| sansa    |
| cersei   |
| rhaegar  |
| arya     |
| jaime    |
| bran     |
| tywin    |
| rob      |
|----------|

Как я могу вставить Серию D в столбец D sht («Таблица» в моей электронной таблице)?

Я пытался:

writer = pd.ExcelWriter(path, engine='openpyxl')
K.to_excel(writer,'Table', startrow=0, startcol=4, header=False, index=False)
writer.save()

Но он удаляет все другие вкладки из моей электронной таблицы, а также стирает значения в столбцах A: C моей электронной таблицы ...

Ответы [ 2 ]

0 голосов
/ 16 сентября 2018

Методы pd.ExcelWriter и .to_excel в пандах перезаписывают существующий файл. Вы не изменяете существующий файл, но удаляете его и пишете новый файл с тем же именем.

Если вы хотите записать в существующий файл Excel, вы, вероятно, захотите использовать openpyxl.

import openpyxl

# open the existing file
wb = openpyxl.load_workbook('myfile.xlsx')

# grab the worksheet.  my file has 2 sheets: A-sheet and B-sheet
ws = wb['A-sheet']

# write the series, D, to the 4th column 
for row, v in enumerate(D, 1):
    ws.cell(row, 4, v)

# save the changes to the workbook
wb.save('myfile.xlsx')
0 голосов
/ 16 сентября 2018

Попробуйте это

  • Откройте файл Excel и сохраните содержимое в объекте panda, скажем, df.
  • Создайте новый столбец в df ['new column']
  • Сохраните значение в новом столбце, теперь у panda есть все предыдущие значения + новый столбец
  • Сохраните файл df в excel, используя ExcelWriter

PS: при открытии файла Excel иПри записи файла Excel в pandas есть возможность открыть конкретный лист, например sheet_name=

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