如何在熊猫中划分两个groupby对象?

Dim*_*ims 4 python group-by pandas

我有以下代码:

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'})
Run Code Online (Sandbox Code Playgroud)

这使

在此处输入图片说明

现在如何将更详细的分组依据除以较不详细的分组(以计算百分比)?

我已经用groupby读取了熊猫总数的百分比,但是无法得出如何重写我的案例的信息。

piR*_*red 6

g2.unstack()进入最后一级。然后分开,按列广播。然后stack再说一次。

g2.unstack().div(g1.p, axis=0).stack()
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明