根据条件将数据框拆分为多个数据集,并将每个子集拆分为Excel

2024-09-28 20:51:20 发布

您现在位置:Python中文网/ 问答频道 /正文

有人能帮我吗?我没有得到任何输出,也没有收到任何错误消息。我试图使用客户条件将数据框过滤成多个子集,并将每个子集粘贴到Excel工作表中

Master_data(df)Output AOutput B

import pandas as pd
import os
## Belgium\2020\GMC Prep Automation")
from openpyxl import load_workbook
import xlsxwriter
from shutil import copyfile

file = input("please enter excelfile: ")
extension = os.path.splitext(file)[1]
filename = os.path.splitext(file)[0]
pth = "\\we.interbrew.net\\DFSEurope\\Crown Jewels\\Revenue Management\\WEST\\2. BE\\4. MPM Belgium\\2020\\GMC Prep Automation"
newfile = os.path.join(pth, filename+"_2"+extension)
#myfile = os.path.join(pth, Split_Test.xlsx)

df = pd.read_excel(file)
colpick = input("enter column to be splitted: ")        
col = list(set(df[colpick].values))

def sendtoexcel(col):
    copyfile(file, newfile)

    for j in col:
        writer = pd.ExcelWriter(newfile,engine='openpyxl')

        for myname in col:
            mydf=df.loc[df[colpick] == myname]
            mydf.to_excel(writer,sheet_name=myname,index=False)               

        writer.save()

    print("\nCompleted")
    return

Tags: pathimportdfoscol子集pthfile
1条回答
网友
1楼 · 发布于 2024-09-28 20:51:20

假设用户输入正确的文件名和现有列,则在同一列上考虑^ {CD1>}运行,而不是双^ {CD2>}循环。如果用户输入的列名不正确或将数据导出到Excel时出现问题,代码将被包装在try/except

from openpyxl import load_workbook

...

colpick = input("enter column to be splitted: ")        
colpick = colpick.title().strip()

def sendtoexcel():
    try:
        with pd.ExcelWriter(file, engine='openpyxl') as writer:
            writer.book = load_workbook(file)

            for i, sub in df.groupby([colpick]):             
                sub.to_excel(writer, sheet_name=i, index=False)

            writer.save()

    except Exception as e:
        print(e)

# ACTUALLY RUN FUNCTION
sendtoexcel()

相关问题 更多 >