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