获取子组的计数

问题描述 投票:0回答:1

我找到了 groupby 命令,它可以根据类别的垃圾箱获取计数。我希望获得有关根据两个不同类别中的两组不同垃圾箱进行计数的帮助。

例如,

data = [
    {'a': 11, 'b': 1},
    {'a': 22, 'b': 1},
    {'a': 25, 'b': 5},
    {'a': 11, 'b': 1},
    {'a': 22, 'b': 2},
    {'a': 15, 'b': 6},
]
df.groupby(pd.cut(df["a"], [10,20,30])).count()

从上面我可以数出有多少个物体是从 10 到 20 个,对于项目 a 是从 20 到 30 个。

但是,我不确定如何将 a 的输出放入另一个容器中。例如,我感兴趣的是从 10 到 20 中有多少次“a”,然后从 1 到 5 中有多少次“b”,然后从 5 到 10 中有多少次“b”。同样,我有多少次“a”从20到30,然后从1到5“b”,然后从5到10“b”。

我也许可以为“a”的每个类别创建单独的数据帧,然后使用 groupby 来计算 b 的容器中的对象。有没有更简单的方法可以将 groupby 类别与 bin 一起使用,而无需制作这些单独的数据帧?谢谢你。

pandas dataframe group-by
1个回答
0
投票

您可以提供多个组密钥:

df.groupby(
    [
        pd.cut(df["a"], [10, 20, 30]),
        pd.cut(df['b'], [1, 5, 10])],
    observed=False  # Added this to silence a deprecation warning
).count()
                  a  b
a        b            
(10, 20] (1, 5]   0  0
         (5, 10]  1  1
(20, 30] (1, 5]   2  2
         (5, 10]  0  0
© www.soinside.com 2019 - 2024. All rights reserved.