1
我有这个数据帧,我必须变成一个数据透视表。没问题。熊猫提供的pivot/pivot_table允许创建漂亮的数据透视表,但有一些Excel的功能我似乎无法复制。如何熊猫groupby和pivot_table有pivotto表看起来像Excel的
哪些?骨料中途(在division_sac_ac
看到的总金额),并通过
slice_ac = df.groupby(by='ac').sum()
slice_sac = df.groupby(by='sac').sum()
得到我该如何整合3(支点,slice_ac,slice_sac)对象?
编辑:部分结果,但仍然不能令人满意(部分是因为我可以集成slice_sac
但不slice_ac
- 而且通常它的所有aestetichs是从Excel英里远):
table_df = pd.pivot_table(df, index=['ac','sac'], values='value', columns=['name'], aggfunc=[np.sum], margins=True)
print(table_df.stack(['name']))
这将产生:
sum
ac sac name
bond Corp omega 0.05
All 0.05
Govt lambda 0.05
rho 0.20
All 0.25
equity Europe alfa 0.05
beta 0.05
gamma 0.10
All 0.20
US epsilon 0.20
All 0.20
All alfa 0.05
beta 0.05
epsilon 0.20
gamma 0.10
lambda 0.05
omega 0.05
rho 0.20
All 0.70
实施例:
import pandas as pd
import numpy as np
division_sac_ac = {'equity': ['Europe', 'US'], 'bond': ['Corp', 'Govt']}
df = pd.DataFrame.from_dict({'record_1': ['alfa', 'Europe', 'equity', 0.05],
'record_2': ['beta', 'Europe', 'equity', 0.05],
'record_3': ['gamma', 'Europe', 'equity', 0.1],
'record_4': ['epsilon', 'US', 'equity', 0.2],
'record_5': ['rho', 'Govt', 'bond', 0.2],
'record_6': ['lambda', 'Govt', 'bond', 0.05],
'record_7': ['omega', 'Corp', 'bond', 0.05], }, orient='index')
df.columns = ['name', 'sac', 'ac', 'value']
table_df = pd.pivot_table(df, index=['ac','sac','name'], values='value', aggfunc=[np.sum])
slice_ac = df.groupby(by='ac').sum()
slice_sac = df.groupby(by='sac').sum()
print(table_df)
print(slice_ac)
print(slice_sac)
table_df
做的工作,但我想还集成中途结果(slice_ac, slice_sac
)如本图片:
,而我的输出更像是:
sum
ac sac name
bond Corp omega 0.05
Govt lambda 0.05
rho 0.20
equity Europe alfa 0.05
beta 0.05
gamma 0.10
US epsilon 0.20
value
ac
bond 0.3
equity 0.4
value
sac
Corp 0.05
Europe 0.20
Govt 0.25
US 0.20
优秀!谢谢 – Asher11