【问题标题】:Save table to different Excel sheets using python使用python将表格保存到不同的Excel工作表
【发布时间】:2016-04-25 20:12:47
【问题描述】:

我需要将此表写入excel 到不同的sheet,而不是不同的文件

used_at                                     4      
address                          10ruslake.ru 1c.ru
ID                                                 
0025977ab2998580d4559af34cc66a4e          0.0   0.0
00c651e018cbcc8fe7aa57492445c7a2          0.0   0.0
0120bc30e78ba5582617a9f3d6dfd8ca          0.0   0.0

used_at                               5          
address                          vk.com yandex.ru
ID                                               
0025977ab2998580d4559af34cc66a4e    152       465
00c651e018cbcc8fe7aa57492445c7a2     23       213
0120bc30e78ba5582617a9f3d6dfd8ca      0       100

我试试

dfs[0].to_excel("group_edit.xlsx", sheet_name='Sheet1')
dfs[1].to_excel("group_edit.xlsx", sheet_name='Sheet2')

但它不起作用。我尝试写一个循环:

for i in dfs:
    df[i].to_excel("group_edit.xlsx", sheet_name='Sheet')

但它返回错误,我不知道,如何在循环中指定sheet 的数量

【问题讨论】:

    标签: python excel pandas


    【解决方案1】:

    我认为你可以使用rename_axispandas0.18.0 中的新功能)和to_excel

    示例:

    df = pd.DataFrame({('5', 'vk.com'): {'0120bc30e78ba5582617a9f3d6dfd8ca': 0, '00c651e018cbcc8fe7aa57492445c7a2': 23, '0025977ab2998580d4559af34cc66a4e': 152}, ('5', 'yandex.ru'): {'0120bc30e78ba5582617a9f3d6dfd8ca': 100, '00c651e018cbcc8fe7aa57492445c7a2': 213, '0025977ab2998580d4559af34cc66a4e': 465}, ('4', '10ruslake.ru'): {'0120bc30e78ba5582617a9f3d6dfd8ca': 0.0, '00c651e018cbcc8fe7aa57492445c7a2': 0.0, '0025977ab2998580d4559af34cc66a4e': 0.0}, ('4', '1c.ru'): {'0120bc30e78ba5582617a9f3d6dfd8ca': 0.0, '00c651e018cbcc8fe7aa57492445c7a2': 0.0, '0025977ab2998580d4559af34cc66a4e': 0.0}, ('6', 'youtube.com'): {'0120bc30e78ba5582617a9f3d6dfd8ca': 109, '00c651e018cbcc8fe7aa57492445c7a2': 354, '0025977ab2998580d4559af34cc66a4e': 45}, ('6', 'facebook.com'): {'0120bc30e78ba5582617a9f3d6dfd8ca': 0, '00c651e018cbcc8fe7aa57492445c7a2': 44, '0025977ab2998580d4559af34cc66a4e': 56}})
    
    #remove column names and index name
    df = df.rename_axis(None).rename_axis((None,None), axis=1)
    
    writer = pd.ExcelWriter('test.xlsx')
    for i, g in df.groupby(axis=1, level=0):
        #print i
        #remove top level 4,5,6
        g.columns = g.columns.droplevel(0)
        #reset index, change column name
        g = g.reset_index().rename(columns={'index':'aaa'})
        #print g
        #sheet name is 'sheet_' + name of group (4,5,6)
        g.to_excel(writer,'sheet_%s' % i)
    writer.save()
    

    旧版本:

    #remove column names and index name
    df = df.rename_axis(None).rename_axis((None,None), axis=1)
    print df
                                                4            5            \
                                     10ruslake.ru 1c.ru vk.com yandex.ru   
    0025977ab2998580d4559af34cc66a4e          0.0   0.0    152       465   
    00c651e018cbcc8fe7aa57492445c7a2          0.0   0.0     23       213   
    0120bc30e78ba5582617a9f3d6dfd8ca          0.0   0.0      0       100   
    
                                               6               
                                     youtube.com facebook.com  
    0025977ab2998580d4559af34cc66a4e          45           56  
    00c651e018cbcc8fe7aa57492445c7a2         354           44  
    0120bc30e78ba5582617a9f3d6dfd8ca         109            0  
    
    dfs = []
    for i, g in df.groupby(axis=1, level=0):
        #print i
        #remove top level 4,5,6
        g.columns = g.columns.droplevel(0)
        #reset index, change column name
        g = g.reset_index().rename(columns={'index':'aaa'})
        #print g
        dfs.append(g)
    
    print dfs[0]
                                    aaa  10ruslake.ru  1c.ru
    0  0025977ab2998580d4559af34cc66a4e           0.0    0.0
    1  00c651e018cbcc8fe7aa57492445c7a2           0.0    0.0
    2  0120bc30e78ba5582617a9f3d6dfd8ca           0.0    0.0
    
    writer = pd.ExcelWriter('test.xlsx')
    for n, df in enumerate(dfs):
        df.to_excel(writer,'sheet%s' % n)
    writer.save()
    

    【讨论】:

    • 请检查解决方案,我尝试改进输出。
    • Phuuu,我用 excel 2010 测试过,效果很好。
    • 我添加示例DataFrame回答,请查看我的解决方案。
    • 我在使用 excel 时遇到了一些问题,现在可以了!谢谢!
    • 很高兴能帮到你!祝你好运!
    猜你喜欢
    • 2017-09-28
    • 2020-01-05
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多