我有:
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,即值:频率)。
我还想让列表根据计数按降序排序
我有:
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,即值:频率)。
我还想让列表根据计数按降序排序
不确定这是否是最有效的答案,但我找到的解决方案是:
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