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}”)