首页 > 解决方案 > 将列转换为具有列值计数的列标题

问题描述

图像 A 是我的数据框,有两列作为多个值,我想将此 val 列转换为我的列标题,如图 B 所示,并为每个用户添加值计数。我尝试使用 pandas groupby 和 count 但无法获得预期结果。

lst = ['UserA', 'UserB', 'UserC', 'UserD','UserB', 'UserC']
lst2 = ['X', 'Y', 'Z', 'Y','X','Z'] 

dm = pd.DataFrame(list(zip(lst, lst2)), columns =['Name', 'val']) 
dm['count']= 1
dm.groupby(['Name','val']).count()

图 A,这是我的数据集

图 B,这是预期的输出

标签: pythonpandascount

解决方案


添加unstack

dm.groupby(['Name','val']).count()['count'].unstack('val', fill_value='')

输出:

val    X  Y  Z
Name          
UserA  1      
UserB  1  1   
UserC        2
UserD     1   

推荐阅读