我对熊猫还不熟悉,所以我不确定我是否在以最好的方式做我想做的事情,其中一部分似乎工作不正常
在我的数据库中,我有一个表记录了我网站上所有产品的销售情况,我想创建一个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的正确编号。发生了什么
在循环中,我只是将报告所需的列附加到无重复数据帧中
假设您的数据帧包含:
要计算每种产品的销售数量要容易得多 pandasonic)要运行:
我添加了重命名('cnt'),以给结果一个有意义的名称。 否则,该名称将从原始列继承 (售价),但值是销售额,而不是价格
上述样本输入的结果为:
这是一个系列,其索引名为product_id,并且每个 索引是该产品的销售计数
最后一句话:我将结果命名为cnt(而不是count),因为 count是函数(此处使用)的名称,它是一个坏名称 使用名称“覆盖”现有函数或函数的名称的实践 属性
相关问题 更多 >
编程相关推荐