繁体   English   中英

如何 append 列出 python 中现有 excel 工作簿(同一张表)的列表

[英]How to append a list to an existing excel workbook (same sheet) in python

我正在尝试使用两种不同的方法将列表添加到现有工作表(将列表附加为一行)。 第一个运行良好,但工作表没有变化。 第二个附加列表,但通过创建一个新表(这不是我的目标)。 现有工作表的问题是前面的 A5 列有数据,我想 append 填充空白单元格(A1 到 A4)的列表。 换句话说,我不想删除现有数据或通过包含一个新行来移动它。 我尝试了以下方法:

    #the existing sheet looks like that:
    A1 A2 A3 A4 A5 A6......
                5  6 ......
                2  7 ......
                .  . ......
                .  . ......
    import pandas as pd
    import numpy as np
    import openpyxl

    #solution 1
    lista=[1,2,3,4]
    wb= openpyxl.load_workbook('teste.xlsx')
    sheetname = wb['Hoja1']
    sheetname.cell(row=3,column=1).value=str(lista)

    #solution 2  
    with pd.ExcelWriter('teste.xlsx', mode='a') as writer:
            pd.DataFrame(lista).to_excel(writer,  header=False, index=False, startrow=3, startcol=1, 
            sheet_name="Hoja1")

你能帮我吗?

You can use pandas.to_excel and pandas.read_excel ( https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.to_excel.html and https://pandas.pydata.org/pandas -docs/stable/reference/api/pandas.read_excel.html ),您可以将数据添加到 dataframe 中,例如列,而不是行:

# first read your data set
df = pd.read_excel('teste.xlsx', sheet_name='Hoja1')
# then add your columns
df['A1'] = 1 # you write only one value but I guess you have more
...
# and save
df.to_excel("teste.xlsx", sheet_name='Hoja1')

编辑(18.5.):

如果您坚持附加行(我不知道您的数据是如何生成的,并且您是否可以通过索引直接提供 dataFrame),我建议您拆分原始数据(或者仅加载第二部分),创建新 dataFrame您的数据逐行然后concat它们,即:

# take the second part after A5 column which you do not want to change
df2 = df.loc[:,'A5':]

# take the first part and use only column names
df1 = df.loc[:,:'A4'].dropna()
# append your data, here 2 rows
df1 = df1.append(pd.DataFrame([[5, 6, 3, 2], [7, 8, 1, 5]], columns=df1.columns))

# concat
df3 = pd.concat([df1, df2], axis=1)
# and save
df3.to_excel("teste.xlsx", sheet_name='Hoja1')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM