我想做的事情一定是基本的pandas,但我正在努力想出它的解决方法。我希望在任意分组级别上都可以使用每个组的比例和计数:
import pandas as pd
df = pd.DataFrame({'A': [1, 0, 1, 0, 1, 0, 0, 0], 'B': ['A'] * 4 + ['B'] * 4})
gb = df.groupby(['A', 'B']).size()
prop_gb = gb / gb.groupby(level=0).sum()
prop_gb
现在是:
prop_gb
Out[116]:
A B
0 A 0.400000
B 0.600000
1 A 0.666667
B 0.333333
dtype: float64
不过我最终希望实现这个目标:
A B prop count
0 A 0.400000 2
B 0.600000 3
1 A 0.666667 2
B 0.333333 1
我尝试将两个pandas.Series
对象gb
和prop_gb
合并,通过将它们转换为字典并以这种方式“连接”它们,但我知道必须有一种本地的pandas方法来实现这一点...
从技术上讲,这实现了我的目标:
desired = {k: (v, prop_gb.to_dict()[k]) for k, v in gb.to_dict().items()}
desired
{(0, 'A'): (2, 0.40000000000000002),
(0, 'B'): (3, 0.59999999999999998),
(1, 'A'): (2, 0.66666666666666663),
(1, 'B'): (1, 0.33333333333333331)}