如何将 Pandas 系列插入现有 Excel 文件的特定列(不从该文件中删除内容)?

How to insert a Pandas Series into a specific column of an existing Excel file (without deleting content from that file)?

我使用 pandas 从 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 |
|-------+------------+----------|

然后我在 pandas 中创建了以下系列 (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 插入 sht 的 D 列(我的传播 sheet 的 "Table" sheet)?

我试过了:

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

但是它从我的传播sheet中删除了所有其他选项卡,并且还删除了我的传播A:C列中的值sheet...

试试这个

  • 打开 excel 文件并将内容存储在 panda 对象中 让我们说 df.
  • 在 df['new column']
  • 中创建新列
  • 将值存储在新列中,现在 panda 拥有您之前的所有值 + 新列
  • 使用 ExcelWriter 将 df 保存到 excel 文件

PS:打开 excel 文件并在 pandas 中写入 excel 文件时,可以选择打开特定的 sheet 即 sheet_name=

pd.ExcelWriter.to_excel方法pandas覆盖现有文件。您不是在修改现有文件,而是将其删除并写入一个同名的新文件。

如果您想写入现有的 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')