0

我有:

df=pd.DataFrame({'col1':[1,1,1,1,6,6,6,2],'col2':[1,1,1,4,4,4,5,2]})

在此处输入图像描述

我想:

按每个值分组,col1然后在第二列中显示列表频率(即,第 1 组中有 3 个 1 和 1 4 显示为 1:3、4:1,即值:频率)。

我还想让列表根据计数按降序排序

在此处输入图像描述

4

1 回答 1

0

不确定这是否是最有效的答案,但我找到的解决方案是:

gpby = df.groupby('col1')
vals = []
for i, row in gpby:
    v = row.col1.values[0]
    c = row.shape[0]
    vc=row.col2.value_counts().reset_index().values.tolist()
    row_values = (v,c,vc)
    vals.append(row_values)
    
new_df = pd.DataFrame(vals, columns=['value','cnt','vc'])
new_df

在此处输入图像描述

于 2021-06-24T15:36:02.783 回答