Python收集所有事件

2024-09-30 05:19:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我对熊猫还不熟悉,所以我不确定我是否在以最好的方式做我想做的事情,其中一部分似乎工作不正常

在我的数据库中,我有一个表记录了我网站上所有产品的销售情况,我想创建一个csv报告,其中包含所有已销售的产品、最低价格、最高价格、价格和其他信息。销售每笔销售的表具有以下属性:

product_id
sell_price
created_by

从我的研究中,我发现了如何从db导出中使用csv创建数据帧,如下所示

sellsdb = pd.read_csv('sellsdb.csv', delimiter = ',')

现在,我复制了一个没有副本的数据帧

sells = sellsdb.copy().drop_duplicates(subset='product_id', keep=False)

现在,我在复制的数据框中循环每个独特的产品标题

for index, row in sells.iterrows():
    countSells = sellsdb.loc[sellsdb['product_id'] == str(row['product_id'])].count()['product_id']
    if countSells > 1:
        print(countSells)

当我运行此程序时,即使数据帧中存在重复项,所有计数都返回为1,但是当我硬编码产品id时,我得到了该id的正确编号。发生了什么

在循环中,我只是将报告所需的列附加到无重复数据帧中


Tags: csv数据id数据库产品报告方式记录
1条回答
网友
1楼 · 发布于 2024-09-30 05:19:06

假设您的数据帧包含:

  product_id  sell_price created_by
0        Aaa       20.35      Xxxx1
1        Aaa       20.15      Xxxx2
2        Aaa       22.00      Xxxx3
3        Bbb       10.13      Xxxx4
4        Ccc       16.00      Xxxx5
5        Ccc       16.50      Xxxx6
6        Ccc       17.00      Xxxx7

要计算每种产品的销售数量要容易得多 pandasonic)要运行:

result = df.groupby('product_id').sell_price.count().rename('cnt')

我添加了重命名('cnt'),以给结果一个有意义的名称。 否则,该名称将从原始列继承 (售价),但值是销售额,而不是价格

上述样本输入的结果为:

product_id
Aaa    3
Bbb    1
Ccc    3
Name: cnt, dtype: int64

这是一个系列,其索引名为product_id,并且每个 索引是该产品的销售计数

最后一句话:我将结果命名为cnt(而不是count),因为 count函数(此处使用)的名称,它是一个坏名称 使用名称“覆盖”现有函数或函数的名称的实践 属性

相关问题 更多 >

    热门问题