Python 无法基于具有groupby的少数列统计dataFrame中值的出现次数
我有一个数据帧:Python 无法基于具有groupby的少数列统计dataFrame中值的出现次数,python,pandas,pandas-groupby,Python,Pandas,Pandas Groupby,我有一个数据帧: id colA colB colC 194 1 0 1 194 1 1 0 194 2 1 3 195 1 1 2 195 0 1 0 197 1 1 2 我希望通过id计算每个值组的出现率。在我的情况下,预期结果是: id countOfValue0 countOfValue1 countOfValue2 countOfVal
id colA colB colC
194 1 0 1
194 1 1 0
194 2 1 3
195 1 1 2
195 0 1 0
197 1 1 2
我希望通过id计算每个值组的出现率。在我的情况下,预期结果是:
id countOfValue0 countOfValue1 countOfValue2 countOfValue3
194 2 3 1 1
195 1 2 1 0
197 0 1 1 0
如果值出现在同一行中-逐行显示不同的值(这就是为什么我有for id=194,value1=3)
我想使用group by id colA、id colB、id colC将数据分成3个数据帧
类似于=df.groupby('id','colaA'),但我找不到基于id计算这些数据帧值的正确方法。可能有更有效的方法来实现这一点试试:
res=df.set_index(“id”,append=True).stack()\
.reset_索引(级别=0)。reset_索引(级别=1,下降=True)\
.drop_duplicates().assign(_dummy=1)\
.rename(列={0:“countOfValue”})\
.pivot_表(index=“id”,columns=“countOfValue”,values=“\u dummy”,aggfunc=“sum”)\
.fillna(0).astype(int)
res=res.add_前缀(“countOfValue”)
del res.columns.name
产出:
countOfValue0。。。价值计数3
身份证件
194 2 ... 1.
195 1 ... 0
197 0 ... 0
很高兴听到:)请将其标记为答案,然后结束问题。