通过输出多列进行分组

问题描述 投票:0回答:1

我正在尝试通过操作输出一组 我的输入文件是: 在此输入图片描述

预期输出:

在此输入图片描述

使用的代码:

df=pd.read_csv('testPCI.csv')

output= df.groupby(['Frequency'])['PCI'].count().to_excel("output.xlsx")

我得到了这个:

在此输入图片描述

我怎样才能获得预期的输出,其中包括计数列以及%计数列。

pandas
1个回答
0
投票

尝试:

(dfc:=df.groupby(['Frequency','PCI'])['PCI'].count().rename('count').reset_index())\
   .assign(count_pct=dfc['count']/dfc['count'].sum()*100).round(2)

输出:

   Frequency  PCI  count  count_pct
0        123    5      5      21.74
1        456    7      8      34.78
2        999    9     10      43.48

详情:

使用“walrus”运算符创建一个数据帧,使用 groupby 按频率对 PCI 进行计数。 然后使用创建的数据帧分配一个新列 count_pct 作为 count 除以 count 之和乘以 100 并四舍五入到小数点后两位。

© www.soinside.com 2019 - 2024. All rights reserved.