Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 无法基于具有groupby的少数列统计dataFrame中值的出现次数_Python_Pandas_Pandas Groupby - Fatal编程技术网

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
很高兴听到:)请将其标记为答案,然后结束问题。