在工作簿中的新 sheet 上创建 pandas 数据透视表 table
Create pandas pivot table on new sheet in workbook
我正在尝试将我创建的枢轴 table 发送到工作簿中的新 sheet 上,但是,由于某种原因,当我执行我的代码时,新的 sheet使用枢轴 table 创建(sheet 被称为 'Sheet1')并且数据 sheet 被删除。
这是我的代码:
worksheet2 = workbook.create_sheet()
worksheet2.title = 'Sheet1'
worksheet2 = workbook.active
workbook.save(filename)
excel = pd.ExcelFile(filename)
df = pd.read_excel(filename, usecols=['Product Description', 'Supervisor'])
table1 = df[['Product Description', 'Supervisor']].pivot_table(index='Supervisor', columns='Product Description', aggfunc=len, fill_value=0, margins=True, margins_name='Grand Total')
print table1
writer = pd.ExcelWriter(filename, engine='xlsxwriter')
table1.to_excel(writer, sheet_name='Sheet1')
workbook.save(filename)
writer.save()
另外,我的枢轴 table 设计有点麻烦。这是枢轴 table 的样子:
如何在末尾添加一列来总结每一行?像这样:(我只需要末尾的列,我不关心像那样格式化它或其他任何东西)
时只需使用margins=True
和margins_name='Grand Total'
参数
演示:
In [15]: df = pd.DataFrame(np.random.randint(0, 5, size=(10, 3)), columns=list('abc'))
In [16]: df
Out[16]:
a b c
0 4 3 0
1 1 1 4
2 4 4 0
3 2 3 2
4 1 1 3
5 3 1 3
6 3 3 0
7 0 2 0
8 2 1 1
9 4 2 2
In [17]: df.pivot_table(index='a', columns='b', aggfunc='sum', fill_value=0, margins=True, margins_name='Grand Total')
Out[17]:
c
b 1 2 3 4 Grand Total
a
0 0.0 0.0 0.0 0.0 0.0
1 7.0 0.0 0.0 0.0 7.0
2 1.0 0.0 2.0 0.0 3.0
3 3.0 0.0 0.0 0.0 3.0
4 0.0 2.0 0.0 0.0 2.0
Grand Total 11.0 2.0 2.0 0.0 15.0
我正在尝试将我创建的枢轴 table 发送到工作簿中的新 sheet 上,但是,由于某种原因,当我执行我的代码时,新的 sheet使用枢轴 table 创建(sheet 被称为 'Sheet1')并且数据 sheet 被删除。
这是我的代码:
worksheet2 = workbook.create_sheet()
worksheet2.title = 'Sheet1'
worksheet2 = workbook.active
workbook.save(filename)
excel = pd.ExcelFile(filename)
df = pd.read_excel(filename, usecols=['Product Description', 'Supervisor'])
table1 = df[['Product Description', 'Supervisor']].pivot_table(index='Supervisor', columns='Product Description', aggfunc=len, fill_value=0, margins=True, margins_name='Grand Total')
print table1
writer = pd.ExcelWriter(filename, engine='xlsxwriter')
table1.to_excel(writer, sheet_name='Sheet1')
workbook.save(filename)
writer.save()
另外,我的枢轴 table 设计有点麻烦。这是枢轴 table 的样子:
如何在末尾添加一列来总结每一行?像这样:(我只需要末尾的列,我不关心像那样格式化它或其他任何东西)
margins=True
和margins_name='Grand Total'
参数
演示:
In [15]: df = pd.DataFrame(np.random.randint(0, 5, size=(10, 3)), columns=list('abc'))
In [16]: df
Out[16]:
a b c
0 4 3 0
1 1 1 4
2 4 4 0
3 2 3 2
4 1 1 3
5 3 1 3
6 3 3 0
7 0 2 0
8 2 1 1
9 4 2 2
In [17]: df.pivot_table(index='a', columns='b', aggfunc='sum', fill_value=0, margins=True, margins_name='Grand Total')
Out[17]:
c
b 1 2 3 4 Grand Total
a
0 0.0 0.0 0.0 0.0 0.0
1 7.0 0.0 0.0 0.0 7.0
2 1.0 0.0 2.0 0.0 3.0
3 3.0 0.0 0.0 0.0 3.0
4 0.0 2.0 0.0 0.0 2.0
Grand Total 11.0 2.0 2.0 0.0 15.0