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")