使用python将表格保存到不同的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的数量

我想你可以使用rename_axis (在pandas 0.18.0新增):

样品:

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