首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >对数据帧的各行进行分组/过滤和计算

对数据帧的各行进行分组/过滤和计算
EN

Stack Overflow用户
提问于 2020-10-07 22:58:47
回答 1查看 24关注 0票数 2

我有一个不同商店每天出售的商品的数据框架:

代码语言:javascript
复制
    date    date_block_num  shop_id item_id item_price  item_cnt_day    day month_year
1953691 24.09.2014  20  5   1039    899.0   1.0 24  09.2014
1953692 27.09.2014  20  5   1015    449.0   1.0 27  09.2014
1953693 07.09.2014  20  5   1329    399.0   1.0 07  09.2014
1953694 27.09.2014  20  5   984 399.0   1.0 27  09.2014
1953695 08.09.2014  20  5   984 399.0   1.0 08  09.2014

我想要得到每个商店的结果。所以我试着:

代码语言:javascript
复制
revenues = {}
for row in transactions_december_2014.sort('shop_id').iterrows():
    if last_shop_id == row.shop_id:
        revenues[shop_id] += row.item_price * row.item_cnt_day
        last_shop_id = row.shop_id
    else:
        revenues[shop_id] = row.item_price * row.item_cnt_day
print(max(revenues))

但它带给我的是:

代码语言:javascript
复制
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-26-391a52cd0210> in <module>()
      9 # transactions_december_2014.groupby("shop_id").sum(transactions_december_2014.item_price * transactions_december_2014.item_cnt_day)
     10 revenues = {}
---> 11 for row in transactions_december_2014.sort('shop_id').iterrows():
     12     if last_shop_id == row.shop_id:
     13         revenues[shop_id] += row.item_price * row.item_cnt_day

/opt/conda/lib/python3.6/site-packages/pandas/core/generic.py in __getattr__(self, name)
   3079             if name in self._info_axis:
   3080                 return self[name]
-> 3081             return object.__getattribute__(self, name)
   3082 
   3083     def __setattr__(self, name, value):

AttributeError: 'DataFrame' object has no attribute 'sort'

我还计划使用groupbys:

代码语言:javascript
复制
transactions_december_2014.groupby("shop_id").sum(transactions_december_2014.item_price * transactions_december_2014.item_cnt_day)

但它从来都不起作用。我现在正在考虑使用lambda来做这件事,因为我正在使用for循环。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-08 00:17:04

据我所知,您想要计算某个商店销售的商品的总价。你可以这样做:

代码语言:javascript
复制
df["cost"] = df["item_price"] * df["item_cnt_day"]
df.groupby("shop_id")["cost"].sum()

首先,创建一个列来保存已售出商品的总价值(价格*售出了多少)。然后根据store进行分组,最终得到成本总和。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64246797

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档