如何在不使用pandas更改文件中现有数据的情况下将新列追加到Excel文件?

时间:2019-06-02 21:45:01

标签: python pandas dataframe

在安装了熊猫和必要的库并从Excel文件中读取后,我想添加一个新列,但是当我写回该文件时,它会删除该文件中已经存在的信息并仅给出新列。

这是我使用的代码:

pf=pd.DataFrame({'ID': [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]})
writer=pd.ExcelWriter(pathdata, engine='xlsxwriter')
pf.to_excel(writer, sheet_name='Sheet1')
writer.save()

4 个答案:

答案 0 :(得分:0)

您最初是从excel作为数据提取数据,然后创建一个新的数据框 df 。然后,您将此新数据框写入excel( df .to_excel(writer,sheet_name ='Sheet1')。此新数据框与最初提取的数据无关。这应该可以解决您的问题:< / p>

import pandas as pd
pathdata= r'C:\Users\......\........\project.xlsx'
data = pd.read_excel(pathdata)

data['ID'] = [10,20,30,40,50,60,70,80,90,100]

writer=pd.ExcelWriter(pathdata, engine='xlsxwriter' )
data.to_excel(writer, sheet_name='Sheet1')
writer.save() 

如果要通过为要添加的列创建新的数据框来解决此问题,可以执行以下操作:

import pandas as pd
pathdata= r'C:\Users\......\........\project.xlsx'
data = pd.read_excel(pathdata)

df=pd.DataFrame({'ID':[10,20,30,40,50,60,70,80,90,100]})
x = [data, df]
data = pd.concat(x, axis = 1)

writer=pd.ExcelWriter(pathdata, engine='xlsxwriter' )
data.to_excel(writer, sheet_name='Sheet1')
writer.save() 

答案 1 :(得分:0)

这可能是因为您实际上并未从Excel文件中读取数据。不知道实际数据是什么样子,这可能是您想要的工作流程:

df = pd.read_excel(pathdata)
df['ID'] = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
df.to_excel(newpathdata)

答案 2 :(得分:0)

import pandas as pd
pathdata= r'C:\Users\......\........\project.xlsx'
data= pd.read_excel(pathdata)

现在我想将此列表添加为附加列,例如,此列表ID = [10,20,30,40,50,60,70,80,90,100]

df=pd.DataFrame({'ID':[10,20,30,40,50,60,70,80,90,100]})
writer=pd.ExcelWriter(pathdata, engine='xlsxwriter' )
df.to_excel(writer, sheet_name='Sheet1')
writer.save() 

这只是给我一个文件,其中只包含我希望保留先前信息的新列

答案 3 :(得分:0)

这是在我现有的excel文件(exceldata.xlsx)中添加名为“total”的新列的简单代码

import pandas as pd
from openpyxl import Workbook
df = pd.read_excel("exceldata.xlsx", engine='openpyxl')
df["total"] = df["Jan"] + df["Feb"] + df["Mar"]
print(df.head())

writer=pd.ExcelWriter("exceldata.xlsx", engine='xlsxwriter' )
df.to_excel(writer, sheet_name='Sheet1')
writer.save() 

这是生成的 excel 文件,其中包含 total 命名列..enter image description here