python - 在 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 有一种方法可以用更少的代码来完成,而无需手动插入列名。
解决方案
推荐阅读
- sql - 尝试实现内部联接
- javascript - FCM 解析错误:标识符“函数”已被声明
- html - 输入的活动状态标签转换的意外行为
- c - C pthread_t 允许读/写吗?
- javascript - 将 MM 转换为英寸 - Javascript
- sql-server - SQL Server:从每日重复值中获取日期范围
- python - 从 Node 子进程运行带有 scrapy 导入的 Python 脚本
- database - Oracle DB_UNIQUE_NAME 和全局数据库名称的用例是什么
- python - 如何在 python 3 的循环中创建一个计数器?
- xslt-1.0 - fo:change-bar-begin 不是 fo:inline fop 1.1 的子代