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

时间:2020-05-02 02:01:31

标签: python excel pandas

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

Master_data(df) Output A Output 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

1 个答案:

答案 0 :(得分:0)

假设用户输入正确的文件名和现有列,请考虑运行groupby,而不要在同一列上进行两次for循环。如果用户输入了不正确的列名,或者将数据成名导出到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()