首页 > 解决方案 > 如何从 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 中编码。任何帮助,将不胜感激。

标签: pythonpandas

解决方案


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

推荐阅读