2016-06-28 46 views
2

我有以下代碼:如何在熊貓中劃分兩個groupby對象?

import numpy as np 
import pandas as pd 
obs = pd.DataFrame({ 
     'storm': [1, 1, 1, 1, 0, 0, 0, 0], 
     'lightning': [1, 1, 0, 0, 1, 1, 0, 0], 
     'thunder': [1, 0, 1, 0, 1, 0, 1, 0], 
     'p': [0.20, 0.05, 0.04, 0.36, 0.04, 0.01, 0.03, 0.27] 
    }) 
g1=obs.groupby(['lightning','thunder']).agg({'p':'sum'}) 
g2=obs.groupby(['lightning','thunder','storm']).agg({'p':'sum'}) 

這給

enter image description here

現在如何通過不太詳細的劃分更詳細的GROUPBY(計算百分比)?

我已閱讀此Pandas percentage of total with groupby,但無法推導出如何重寫我的情況。

+0

什麼是P和會的百分比是多少?從概念上講,這似乎沒有任何意義。如果索引不相同,如何將另一個數據幀分割爲另一個數據幀?爲了回答這個問題,可能需要更多的信息。 –

+0

爲什麼索引不一樣?這些是條件概率。因此,沒有雷電和雷電的概率是63%。有這個事實,沒有風暴的概率是(27/63),是風暴的概率是(36/63)。 – Dims

回答

2

g2.unstack()將最後一級轉換爲列。然後劃分,在列上播出。然後再次stack

g2.unstack().div(g1.p, axis=0).stack() 

enter image description here

+0

令人難以置信,謝謝! – Dims