我有以下df qty
,其中包含带有数量的重复项目的日期。
DF qty
| date | qty | item | ccy |
+------------+------+----------+-----+
| 2015-01-01 | 700 | CB04 box | USD |
| 2015-01-01 | 500 | CB04 box | USD |
| 2015-01-01 | 1500 | AB01 box | USD |
| 2015-01-02 | 550 | CB04 box | USD |
| 2015-01-02 | 750 | AB01 box | USD |
| 2015-01-02 | 500 | AB01 box | USD |
| 2015-01-03 | 100 | AB01 box | USD |
| 2015-01-03 | 200 | AB01 box | USD |
| 2015-01-03 | 300 | AB01 box | USD |
我需要一些建议,如何使DF qty
如下:
DF qty
| date | qty | item | ccy |
+------------+------+----------+-----+
| 2015-01-01 | 1200 | CB04 box | USD |
| 2015-01-01 | 1500 | AB01 box | USD |
| 2015-01-02 | 550 | CB04 box | USD |
| 2015-01-02 | 1250 | AB01 box | USD |
| 2015-01-03 | 600 | AB01 box | USD |
我正在做的是为每个df
制作一个子集date
,然后按qty
对它们进行分组。
qty = qty[qty[date] == '2015-01-01']
然后
## Sum items lots
qty = qty.groupby('item').agg({'date': 'first',
'ccy':'first',
'qty' : 'sum'}).reset_index()
这个过程非常重复,我想要为所有dates
做一些事情,并为item
总结qty
答案 0 :(得分:1)
您可以同时groupby
多个列。在这种情况下,您似乎希望在同一天以相同货币查找给定项目的总金额。这意味着您要分组['date', 'item', 'ccy']
df.groupby(['date', 'item', 'ccy']).sum().reset_index()
输出:
date item ccy qty
0 2015-01-01 AB01_box USD 1500
1 2015-01-01 CB04_box USD 1200
2 2015-01-02 AB01_box USD 1250
3 2015-01-02 CB04_box USD 550
4 2015-01-03 AB01_box USD 600