为了这个问题,让我们假设我们在Pandas有2个商店和库存,有重复的条目.我们在条形码上标明每个项目以及它到达商店的日期(因此,如果日期不同,我们会考虑不同的项目,即使条形码相同),我们也会在每个商店中存储每个商品的库存,和价格:
arrival_date bar_code stock_shop1 stock_shop2 price
1 2015-08-30 8000001 52 11 100
2 2015-08-30 8000001 48 0 85
3 2015-09-11 8000001 10 20 95
4 2015-10-04 8000002 5 10 50
5 2015-10-04 8000002 30 25 49
我们想按到货日期和条形码分组,并且:
>总结每家商店的库存
>设置最低价格(我们在销售,我们希望在两个商店提供相同的报价)
所以我们应该得到:
arrival_date bar_code stock_shop1 stock_shop2 price
1 2015-08-30 8000001 100 11 85
2 2015-09-11 8000001 10 20 95
3 2015-10-04 8000002 35 35 49
我已经看到了几个类似的问题,即使有两个id,但我还没有找到是否可以对某些列求和并在其他列中保持最大值或最小值.我想这是可能的,我只是不知道如何.
我试过了:
df.join(df.groupby(['arrival_date', 'bar_code'])(['stock_shop1', 'stock_shop2']).sum(), on=['arrival_date', 'bar_code'], rsuffix='_r')
只是为了检查我是否至少可以通过’arrival_date’和’bar_code’进行分组并对库存列进行求和,但是我得到错误:
TypeError: 'DataFrameGroupBy' obejct is not callable
有帮助吗?
解决方法:
是的,你可以这样做,在agg中你可以提到在每列上应用哪个聚合规则.
In [121]: (df.groupby(['arrival_date', 'bar_code'])
.agg({'stock_shop1': np.sum, 'stock_shop2': np.sum, 'price': np.min})
)
Out[121]:
price stock_shop1 stock_shop2
arrival_date bar_code
2015-08-30 8000001 85 100 11
2015-09-11 8000001 95 10 20
2015-10-04 8000002 49 35 35
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。