python - 如何从 DataFrame 中获取 DataFrame,其中一列作为其他行的值的总和?
问题描述
我以这种方式有一个DataFrame:
shop_id item_price item_cnt_day day month year
59 9.00 1.0 02 01 2013
59 8.00 2.0 02 01 2013
25 10.00 4.0 05 02 2013
25 17.0 1.0 06 01 2013
25 10.00 1.0 15 01 2013
我尝试得到如下 DataFrame 的结果:
shop_id all_revenue month year
59 25.00 01 2013
25 27.00 01 2013
我的意思是我想在 2013 年 1 月获得每家商店的收入。
但是,我不知道如何在 Pandas 中编码。任何帮助,将不胜感激。
解决方案
eval
+ groupby
+sum
您可以通过 分配系列eval
,然后使用groupby
:
res = df.eval('revenue=item_price * item_cnt_day')\
.groupby(['shop_id', 'month', 'year'], as_index=False)['revenue'].sum()
如果您愿意,您可以在2013 年 1 月(在上述操作query
之前或之后):
res = res.query('month == 1 & year == 2013')
print(res)
shop_id month year revenue
0 25 1 2013 27.0
2 59 1 2013 25.0