使用Python(xlsxwriter/pandas)向现有Excel指定列写入DataFrame数据失败求助
实现将Beta.xlsx的Col_B数据写入Alpha.xlsx的Col_E列
问题说明
使用xlsxwriter更新Excel列失败,无法通过pandas向现有Excel指定列追加数据,需求是将Beta.xlsx的Col_B数据写入Alpha.xlsx的Col_E列,保留原有数据格式与内容。
原错误代码
import xlsxwriter wb = xlsxwriter.Workbook(r'G:\alpha.xlsx') ws = wb.add_worksheet() data=[df1] ws.write_column('D2', data) wb.close()
错误原因:xlsxwriter仅支持创建新Excel文件,无法修改现有文件;且data=[df1]的写法错误,未正确提取DataFrame列数据。
现有文件内容
Alpha.xlsx
Col_A Col_B Col_C Col_D Col_E Col_F 1 10-10-2022 Amy Racing 2 05-10-2022 John Music 3 04-08-2022 Adam Travel 4 07-06-2022 Jenny Games
Beta.xlsx
Col_A Col_B Col_C 1 132150 Section A 2 546546 Section B 3 556446 Section C 4 123215 Section D
正确代码实现
方法1:使用pandas+openpyxl(适合快速批量赋值)
import pandas as pd # 读取Alpha.xlsx全部数据 df_alpha = pd.read_excel(r'G:\alpha.xlsx') # 读取Beta.xlsx仅Col_B列数据 df_beta = pd.read_excel(r'G:\Beta.xlsx', usecols=['Col_B']) # 匹配行数,将Beta的Col_B赋值给Alpha的Col_E df_alpha['Col_E'] = df_beta['Col_B'].values # 用openpyxl引擎保存,保留原有格式 with pd.ExcelWriter(r'G:\alpha.xlsx', engine='openpyxl', mode='a', if_sheet_exists='replace') as writer: df_alpha.to_excel(writer, index=False, sheet_name='Sheet1')
方法2:使用openpyxl直接操作单元格(适合精准控制格式)
from openpyxl import load_workbook import pandas as pd # 提取Beta.xlsx的Col_B数据为列表 df_beta = pd.read_excel(r'G:\Beta.xlsx', usecols=['Col_B']) beta_col_b = df_beta['Col_B'].tolist() # 加载现有Alpha.xlsx文件 wb = load_workbook(r'G:\alpha.xlsx') ws = wb.active # 操作默认工作表 # 写入Col_E列(Excel列号为5,从第2行开始写入数据) for idx, value in enumerate(beta_col_b, start=2): ws.cell(row=idx, column=5).value = value # 保存修改后的文件 wb.save(r'G:\alpha.xlsx')
预期效果
Col_A Col_B Col_C Col_D Col_E Col_F 1 10-10-2022 Amy 132150 Racing 2 05-10-2022 John 546546 Music 3 04-08-2022 Adam 556446 Travel 4 07-06-2022 Jenny 123215 Games
内容的提问来源于stack exchange,提问作者aza01
相关产品推荐
相关产品推荐

