我有一些数据如下:
+---------+----------+----------+
| groupX | groupY | id |
+---------+----------+----------+
| A | 1 | e13r2 |
| B | 2 | efwu1 |
| A | 1 | efgi3 |
| B | 4 | eoij9 |
+---------+----------+----------+
df = pd.DataFrame([['A',1,'e13r2'],['B',2,'efwu1'],['A',1,'efgi3'],['B',4,'eoij9']],
columns=['groupX','groupY','id'])
让我演示一下我的目标:
我想按groupX
分组,然后按groupY
再分组。例如,这将给我们提供组A中的所有内容。组A进一步分为子组。在这种情况下,组A中只有1个子组。在这个子组中有两个id:e13r2
和efgi3
。同样,在组B中有2个子组。子组2包含IDefwu1
,子组4包含IDeoij9
。
因此,组A包含一个子组。这个子组里有两个id。平均而言,组A的子组中有2个id。
组B包含两个子组。子组2包含一个id,子组4包含一个id。平均而言,组B的子组中有1个id。
因此,我正在计算每个组的子组内计数的平均值。
我正在寻找一个Pandas命令,可以返回以下结果:
+---------+--------------------------------+
| groupX | mean counts within subgroups |
+---------+--------------------------------+
| A | 2 |
| B | 1 |
+---------+--------------------------------+
目前我的尝试是:
df.groupby(['groupX','groupY']).count()
但是我不知道如何从这里继续。