Pandas Groupby和具有条件的其他列的计数

Pandas Groupby和具有条件的其他列的计数,pandas,Pandas,我有一个数据帧: id value A 1 A 0 A 1 B 1 B 1 C 0 我正在尝试按id分组,并在“值”列中计算发生次数,以便在每个组中计算发生次数和0次数: id No. of 1's No of 0's A 2 1 B 1 0 C 0 1 我知道一种groupby和使用聚合函数的方法 df.grou

我有一个数据帧:

id    value
A       1 
A       0
A       1 
B       1
B       1
C       0
我正在尝试按id分组,并在“值”列中计算发生次数,以便在每个组中计算发生次数和0次数:

id   No. of 1's   No of 0's
A    2             1
B    1             0
C    0             1
我知道一种groupby和使用聚合函数的方法

df.groupby('id').agg({'value': xxx})

但是我认为应该有更好的方法来做到这一点。

你需要
取消堆栈
添加前缀
/
后缀

df.groupby(["id", "value"])["value"].count().unstack(1).fillna(0).add_prefix(
    "counts_of_"
).add_suffix("'s")


value  counts_of_0's  counts_of_1's
id                                 
A                1.0            2.0
B                0.0            2.0
C                1.0            0.0
使用
df=pd.crosstab(df['id'],df['value'])。重命名(columns=lambda x:f“counts\u of_{x}”)