python - 如何使熊猫数据透视表看起来像 excel 数据透视表
问题描述
df=pd.DataFrame({'Fruit':['Apple', 'Orange', 'Apple', 'Apple', 'Orange', 'Orange'],
'Variety':['Fuji', 'Navel', 'Honeycrisp', 'Gala', 'Tangerine', 'Clementine'],
'Count':[2, 5, 5, 1, 8, 4]})
df_pvt=pd.pivot_table(df, index=['Fruit', 'Variety'], values=['Count'], aggfunc=np.sum)
df_final=pd.concat([
d.append(d.sum().rename((k, 'SubTotal')))
for k, d in df_pvt.groupby(level=0)
]).append(df_pvt.sum().rename(('','GrandTotal')))
df_final.to_excel('pvt.xlsx')
产生这个导出到excel
1) 如何让 pandas 中生成的数据透视表看起来像 excel 数据透视表?2)我如何像excel一样获得第一行的小计?
谢谢你。
解决方案
国际大学联合会,
df_grand = df[['Count']].sum().T.to_frame(name='Count').assign(Fruit='Grand Total', Variety='').set_index(['Fruit','Variety'])
df_sub = df.groupby('Fruit')[['Count']].sum().assign(Variety='').set_index('Variety', append=True)
df_excel = df.set_index(['Fruit','Variety']).append(df_sub).sort_index().append(df_grand)
输出:
Count
Fruit Variety
Apple 8
Fuji 2
Gala 1
Honeycrisp 5
Orange 17
Clementine 4
Navel 5
Tangerine 8
Grand Total 25
推荐阅读
- javascript - 如何将此 AngularJS HTML 模板添加到我的 Angular 8 项目中
- regex - ansible regex_search 从 stdout_lines 中排除特定字符串
- mysql - MySQL 连接使用 poolConnection 关闭
- javascript - javascript 正则表达式不匹配少于 3 个字符的问题
- python-3.x - 创建一个在计时器达到 0 时“解锁”的系统
- php - 在迁移脚本中为 hstore 使用 `Bosnadev\Database\Schema\Blueprint` 而不是 ` Illuminate\Database\Schema\Blueprint`
- spring-boot - 使用 Angular 7 和 spring boot 登录
- javascript - 对象字符串数组转换为仅对象数组javascript
- rest - 如何在 Google Translate API v2 中使用 API 密钥发出基本的 HTTP 请求?
- browser-cache - Cloudflare 中的 Webspeed:如果我已经在 Speed and Caching 中选择了选项,我应该使用页面规则吗?