Pandas数据帧groupby函数

时间:2017-03-16 23:01:02

标签: python pandas jupyter-notebook

我是熊猫新手,我对groupby有点困惑。如果我有一个数据框,如:

pic1

然后:df.groupby(['A']).count()返回类似(不完全但接近)的内容: enter image description here

我的问题是,当您按超过1列分组时会发生什么?像:

df.groupby(['A','B','C']).count()

是否重新组合A,B和C列然后计算计数?

1 个答案:

答案 0 :(得分:1)

count计算非空值的数量。在groupby上下文中,它计算每个组中的非空值的数量。当您一次groupby多个列时,groupby会为每个唯一组合创建一个组。因此,df.groupby(['A','B','C']).count()计算['A', 'B', 'C']

中每个唯一值组合的每列的非空值数

考虑示例数据框df

df = pd.DataFrame(dict(
        A=list('xxxxxxxxyyyyyyyyzzzzzzzz'),
        B=list('111122221111222211112222'),
        C=list('abababababababababababab'),
        D=list(range(23)) + [np.nan]
    ))

然后

df.groupby(['A','B','C']).count()

       D
A B C   
x 1 a  2
    b  2
  2 a  2
    b  2
y 1 a  2
    b  2
  2 a  2
    b  2
z 1 a  2
    b  2
  2 a  2
    b  1