首页 > 解决方案 > 在 Pandas 中创建多个条件值计数表

问题描述

我是 Pandas 的新手(但我已经阅读了几十个寻找答案的线程)。

我想要做的是转换一个表格,如下所示:

col1(名称),col2(产品),以便查看哪个卖家以多少百分比(在他自己的数量之外)销售什么产品。

初始数据框看起来像

John "Product A"
John "Product A"
Jack "Product B"
James "Product C"

等等。

我需要得到的是一张桌子

     Prod A Prod B Prod C
John   %      %       %
Jack
James

在 Excel 中,我会使用 countifs/sumifs 函数来完成,并且可以轻松地创建一个表格。

基本上,我已经成功地实现了我的目标,但我这样做的方式是可怕的:

data = pd.read_excel(r"filename")

data4 = data[['name', 'product']]

vc =  data4['name'].value_counts(0)
type(vc)
vc.values
vc.index.values
counts_frame = pd.DataFrame({'values':vc.index, 'count':vc.values})
counts_frame

A_counts = data4[data4['product']=="Продукт А"]['name'].value_counts(0)
a = A_counts.to_frame()
B_counts = data4[data4['product']=="Продукт В"]['name'].value_counts(0)
b = B_counts.to_frame()
C_counts = data4[data4['product']=="Продукт С"]['name'].value_counts(0)
c = C_counts.to_frame()

proda = counts_frame.merge(a, how='left', left_on=['values'], right_on=a.index)
prodb = proda.merge(b, how='left', left_on=['values'], right_on=b.index)
prodc = prodb.merge(c, how='left', left_on=['values'], right_on=c.index)
prodc

附上我要获取的表格的图像。我确信 Pandas 有一种方法可以用更少的代码来完成,而无需手动插入列名。

桌子

标签: pythonnumpy

解决方案


推荐阅读