使用XLSX Writer将数据透视表写入Excel工作簿范围

时间:2015-01-28 22:07:06

标签: python python-3.x

我有一系列表格,我想写入同一工作表。与此类似的唯一其他帖子是here。我也看了here,但没有看到解决方案。

我希望将类似的情况发送到SAS ODS输出代码,将proc freq结果发送到excel文件。我的想法是将表格结果转换为新的数据框,然后将输出结果堆叠到工作表中。

pd.value_counts(df['name'])
df.groupby('name').aggregate({'Id': lambda x: x.unique()})

如果我知道对应于该表的行数,理想情况下我应该知道要写入的适当单元格范围。

我正在使用:

import xlsxwriter
workbook = xlsxwriter.Workbook('demo.xlsx')
worksheet = workbook.add_worksheet()

tableone = pd.value_counts(df['name'])
tabletwo = df.groupby('name').aggregate({'Id': lambda x: x.unique()})

worksheet.write('B2:C15', tableone)
worksheet.write('D2:E15', tabletwo)

workbook.close()

编辑:包含tableone视图

TableOne:

  Name           |        Freq
    A                       5
    B                       1
    C                       6
    D                       11

1 个答案:

答案 0 :(得分:1)

import xlsxwriter
workbook = xlsxwriter.Workbook('demo.xlsx')
worksheet = workbook.add_worksheet()

tableone = pd.value_counts(df['name'])
tabletwo = df.groupby('name').aggregate({'Id': lambda x: x.unique()})


col = 1, row = 1 #This is cell b2
for value in tableone:
    if col == 16:
        row += 1
        col = 1
    worksheet.write(row,col, value)
    col += 1

col = 3, row = 1 #This is cell d2
for value in tabletwo:
    if col == 16:
        row += 1
        col = 1
    worksheet.write(row,col,value)
    col += 1