如何实现根据账期的不同,生成不同的数据透视表,再进行汇总求和自动化。

讨论 237号炼丹师
Lv2 初级炼丹师
发布在 Pandas   1238   2
讨论 237号炼丹师   1238   2

    尝试修改这句标题。

    尝试修改这段内容。

    先上一个execl表,看下内容格式

    想根据不同的账期分别进行数据透视,然后再汇总每个月的净出账,出账用户数,和发展量
    这个是整理后的表
    笨方法就是一点一点的弄,那太傻逼了
    import pandas as pd
    
    #显示所有列
    pd.set_option('display.max_columns', None)
    filename = f"D:111.xls"
    
    df=pd.read_excel(filename)
    #根据第一列的账期来进行筛选
    '''
    df1=df[df['账期'].isin(['202001'])]
    df2=df[df['账期'].isin(['202002'])]
    df3=df[df['账期'].isin(['202003'])]
    df4=df[df['账期'].isin(['202004'])]
    df5=df[df['账期'].isin(['202005'])]
    df6=df[df['账期'].isin(['202006'])]
    
    pd1 = pd.pivot_table(df1,index=['区县','划小单元'],values=["净出账",'出账用户数','当月发展量'])
    pd1 = pd1.rename(columns={'净出账':'1月净出账','出账用户数':'1月出账用户数','当月发展量':'1月当月发展量'})
    
    pd2 = pd.pivot_table(df2,index=['区县','划小单元'],values=["净出账",'出账用户数','当月发展量'])
    pd2 = pd2.rename(columns={'净出账':'2月净出账','出账用户数':'2月出账用户数','当月发展量':'2月当月发展量'})
    
    pd3 = pd.pivot_table(df3,index=['区县','划小单元'],values=["净出账",'出账用户数','当月发展量'])
    pd3 = pd3.rename(columns={'净出账':'3月净出账','出账用户数':'3月出账用户数','当月发展量':'3月当月发展量'})
    
    pd4 = pd.pivot_table(df4,index=['区县','划小单元'],values=["净出账",'出账用户数','当月发展量'])
    pd4 = pd4.rename(columns={'净出账':'4月净出账','出账用户数':'4月出账用户数','当月发展量':'4月当月发展量'})
    
    pd5 = pd.pivot_table(df5,index=['区县','划小单元'],values=["净出账",'出账用户数','当月发展量'])
    pd5 = pd5.rename(columns={'净出账':'5月净出账','出账用户数':'5月出账用户数','当月发展量':'5月当月发展量'})
    
    pd6 = pd.pivot_table(df6,index=['区县','划小单元'],values=["净出账",'出账用户数','当月发展量'])
    pd6 = pd6.rename(columns={'净出账':'6月净出账','出账用户数':'6月出账用户数','当月发展量':'6月当月发展量'})
    
    #cols1 = pd1.columns[[0,1,2]]
    #cols2 = pd1.columns[[0,1,3]]
    #cols3 = pd1.columns[[0,1,4]]
    pdd1 = pd1.drop(columns = ['1月出账用户数','1月当月发展量'])
    pdd2 = pd1.drop(columns = ['1月净出账','1月当月发展量'])
    pdd3 = pd1.drop(columns = ['1月净出账','1月出账用户数'])
    
    pdd1['2月净出账'] = pd2['2月净出账']
    pdd1['3月净出账'] = pd3['3月净出账']
    pdd1['4月净出账'] = pd4['4月净出账']
    pdd1['5月净出账'] = pd5['5月净出账']
    pdd1['6月净出账'] = pd6['6月净出账']
    #这就生成净出账汇总表,然后再进行下一步。但是这样如果到年底或者要用好几年的数,不得不更加麻烦了,想用个其他的方法实现,
    
    
    
    
    

    大佬可有好的方法。

    我现在的思路是,读取第一列写入列表,再做循环,但是卡住了,大家看代码

    def excel_one_line_to_list(filename):
        df = pd.read_excel(filename, usecols=[0],names=None)  # 读取项目名称列,不要列名
        df = df.drop_duplicates()
    
        df_li = df.values.tolist()
        result = []
        for s_li in df_li:
            result.append(s_li[0])
        return result
    
    #这个函数是读取第一列写入列表,删除重复值
    datelist = excel_one_line_to_list(filename)
    datelist = [i for i in datelist if i != ' ']
    print(datelist)
    st = pd.DataFrame()
    #这个是删除列表中的其他元素不用管,下面循环出问题
    for date in datelist:
    	st=df[df['账期'].isin([date])]
    	st = pd.pivot_table(st,index=['区县','划小单元'],values=["净出账",'出账用户数','当月发展量'])
    	st = st.rename(columns={'净出账':date+'净出账','出账用户数':date+'出账用户数','当月发展量':date+'当月发展量'})
    	print(st)
    st 就是每个账期的数据透视表,下面就是如何汇总到一起,不会了,拼不上,难道分别写入excel的sheet,再读出来处理吗?
    这样是不是多此一举。是用merge还是concat?每个月的划小单元的数量不固定,这个是有调整的
    
    
    
    
    
    
    

    感谢大佬提点建议,长期思考,后面还要再上一个表的基础上再汇总求和插入,还不会啊

    版权声明:作者保留权利,不代表意本站立场。如需转载请联系本站以及作者。

    参与讨论

    回复《 如何实现根据账期的不同,生成不同的数据透视表,再进行汇总求和自动化。

    EditorJs 编辑器

    沙发,很寂寞~
    反馈
    to-top--btn