Pandas:无法将枢轴 Table 信息插入到不同的 Sheet
Pandas: Cant Insert Pivot Table information into a different Sheet
我有一个代码,我可以将 txt 转换为 xlsx,然后添加一个带有公式的列,然后我想在另一个 Sheet 中使用该信息创建一个数据透视表 Table。该代码可以正常工作,但它会创建并清空 Sheet 而不是带有信息的 Sheet。
因此代码如下所示:
import numpy as np
import openpyxl
#Transforming our txt to xlsx
path = r"C:\Users\roslber\Desktop\Codes\Python\Projects\Automated routes.xlsx"
rssdata= pd.read_csv("dwp.txt", sep="\t")
rssdata.to_excel(path, index= None , header= True)
#Writing the formula column
wb = openpyxl.load_workbook(filename=path)
ws1 = wb["Sheet1"]
ws1["AC1"] = "CF Weight"
row_count= ws1.max_row
actual_row= 2
while actual_row <= row_count: #writting the formula in every row
r= str(actual_row)
ws1["AC"+r] = "=(O"+r + "*P"+r +"*Q"+r +")/28316.8"
actual_row= actual_row + 1
#Creating a new sheet with the pivot tables
df = pd.read_excel(path, 0, header= 0) #defining pivot table dataframe
wb.create_sheet("Sheet2")
pv_pack = pd.pivot_table(df, values=["actual_service_time"],\
index=["delivery_station_code"], columns=["cluster_prefix"], aggfunc=np.sum) #constructing the pivot table
print(pv_pack)
with pd.ExcelWriter(path, mode="a") as writer:
pv_pack.to_excel(writer, sheet_name="Sheet2")
writer.save() #inserting pivot table in sheet2
wb.save(path)
出于数据保护的原因,我无法向您展示数据透视表中的信息 table 但是当我打印它时,我可以准确地看到我想要的内容。问题是,尽管正确创建了 Sheet2,但我可以看到打印的信息并没有出现在 Sheet2 中。为什么会这样?
我检查了这些问题:
关于第一个,显然 openpyxl 不能创建一个 Pivot Table,但实际上我不需要 Pivot Table 格式,我只需要 pv_pack Sheet2 中的信息与我打印时显示的一样。
我试图更改我的代码以模仿他们在第二个问题中所做的,但没有成功。
提前致谢
编辑对 RJ Adriaansen 的回答:
Sheet1 中的信息如下所示:
id order mtd delivery_station_code cluster_prefix actual_service_time
xh aabb1 one 1 One_ 231
xr aabb2 two 2 Two_ 135
xd aabb3 three 3 One_ 80
xh aabb8 two 1 Two_ 205
xp aabb9 three 2 One_ 1
xl aabb10 one 3 Two_ 115
在我的编辑器中打印的代码如下所示:
delivery_station_code One_ Two_
1 231 205
2 1 135
3 80 115
with
自动关闭文件,无需尝试手动保存。在写入之前也不需要创建第二个 sheet 。删除 writer.save()
并向上移动 wb.save(path)
将使代码工作。
#Writing the formula column
wb = openpyxl.load_workbook(filename=path)
ws1 = wb["Sheet1"]
ws1["AC1"] = "CF Weight"
row_count= ws1.max_row
actual_row= 2
while actual_row <= row_count: #writting the formula in every row
r= str(actual_row)
ws1["AC"+r] = "=(O"+r + "*P"+r +"*Q"+r +")/28316.8"
actual_row= actual_row + 1
wb.save(path)
#Creating a new sheet with the pivot tables
df = pd.read_excel(path, 0, header= 0) #defining pivot table dataframe
pv_pack = pd.pivot_table(df, values=["actual_service_time"],\
index=["delivery_station_code"], columns=["cluster_prefix"], aggfunc=np.sum) #constructing the pivot table
with pd.ExcelWriter(path, mode="a") as writer:
pv_pack.to_excel(writer, sheet_name="Sheet2")
我有一个代码,我可以将 txt 转换为 xlsx,然后添加一个带有公式的列,然后我想在另一个 Sheet 中使用该信息创建一个数据透视表 Table。该代码可以正常工作,但它会创建并清空 Sheet 而不是带有信息的 Sheet。
因此代码如下所示:
import numpy as np
import openpyxl
#Transforming our txt to xlsx
path = r"C:\Users\roslber\Desktop\Codes\Python\Projects\Automated routes.xlsx"
rssdata= pd.read_csv("dwp.txt", sep="\t")
rssdata.to_excel(path, index= None , header= True)
#Writing the formula column
wb = openpyxl.load_workbook(filename=path)
ws1 = wb["Sheet1"]
ws1["AC1"] = "CF Weight"
row_count= ws1.max_row
actual_row= 2
while actual_row <= row_count: #writting the formula in every row
r= str(actual_row)
ws1["AC"+r] = "=(O"+r + "*P"+r +"*Q"+r +")/28316.8"
actual_row= actual_row + 1
#Creating a new sheet with the pivot tables
df = pd.read_excel(path, 0, header= 0) #defining pivot table dataframe
wb.create_sheet("Sheet2")
pv_pack = pd.pivot_table(df, values=["actual_service_time"],\
index=["delivery_station_code"], columns=["cluster_prefix"], aggfunc=np.sum) #constructing the pivot table
print(pv_pack)
with pd.ExcelWriter(path, mode="a") as writer:
pv_pack.to_excel(writer, sheet_name="Sheet2")
writer.save() #inserting pivot table in sheet2
wb.save(path)
出于数据保护的原因,我无法向您展示数据透视表中的信息 table 但是当我打印它时,我可以准确地看到我想要的内容。问题是,尽管正确创建了 Sheet2,但我可以看到打印的信息并没有出现在 Sheet2 中。为什么会这样?
我检查了这些问题:
关于第一个,显然 openpyxl 不能创建一个 Pivot Table,但实际上我不需要 Pivot Table 格式,我只需要 pv_pack Sheet2 中的信息与我打印时显示的一样。
我试图更改我的代码以模仿他们在第二个问题中所做的,但没有成功。
提前致谢
编辑对 RJ Adriaansen 的回答: Sheet1 中的信息如下所示:
id order mtd delivery_station_code cluster_prefix actual_service_time
xh aabb1 one 1 One_ 231
xr aabb2 two 2 Two_ 135
xd aabb3 three 3 One_ 80
xh aabb8 two 1 Two_ 205
xp aabb9 three 2 One_ 1
xl aabb10 one 3 Two_ 115
在我的编辑器中打印的代码如下所示:
delivery_station_code One_ Two_
1 231 205
2 1 135
3 80 115
with
自动关闭文件,无需尝试手动保存。在写入之前也不需要创建第二个 sheet 。删除 writer.save()
并向上移动 wb.save(path)
将使代码工作。
#Writing the formula column
wb = openpyxl.load_workbook(filename=path)
ws1 = wb["Sheet1"]
ws1["AC1"] = "CF Weight"
row_count= ws1.max_row
actual_row= 2
while actual_row <= row_count: #writting the formula in every row
r= str(actual_row)
ws1["AC"+r] = "=(O"+r + "*P"+r +"*Q"+r +")/28316.8"
actual_row= actual_row + 1
wb.save(path)
#Creating a new sheet with the pivot tables
df = pd.read_excel(path, 0, header= 0) #defining pivot table dataframe
pv_pack = pd.pivot_table(df, values=["actual_service_time"],\
index=["delivery_station_code"], columns=["cluster_prefix"], aggfunc=np.sum) #constructing the pivot table
with pd.ExcelWriter(path, mode="a") as writer:
pv_pack.to_excel(writer, sheet_name="Sheet2")