我有一个不同商店每天出售的商品的数据框架:
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我想要得到每个商店的结果。所以我试着:
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))但它带给我的是:
---------------------------------------------------------------------------
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:
transactions_december_2014.groupby("shop_id").sum(transactions_december_2014.item_price * transactions_december_2014.item_cnt_day)但它从来都不起作用。我现在正在考虑使用lambda来做这件事,因为我正在使用for循环。
发布于 2020-10-08 00:17:04
据我所知,您想要计算某个商店销售的商品的总价。你可以这样做:
df["cost"] = df["item_price"] * df["item_cnt_day"]
df.groupby("shop_id")["cost"].sum()首先,创建一个列来保存已售出商品的总价值(价格*售出了多少)。然后根据store进行分组,最终得到成本总和。
https://stackoverflow.com/questions/64246797
复制相似问题