为了这个问题,假设我们有两个商店和一个有重复条目的熊猫库存。我们在每个商品的条形码上标明其到达商店的日期(因此,如果日期不同,即使条形码相同,我们也会考虑不同的商品),我们在每个商店存储每个商品的库存,以及价格:
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')
只是为了检查是否可以至少按“到达日期”和“条形码”分组,并对股票列求和,但我得到了错误:
TypeError: 'DataFrameGroupBy' obejct is not callable
有什么帮助吗
代码的问题是,您试图将
Groupby object
调用为-df.groupby(['arrival_date', 'bar_code'])(..)
,因此出现了问题您也不需要使用
DataFrame.join
,只需对多列使用groupby
,然后使用.aggregate()
(或.agg()
)。示例-如果不希望
'arrival_date'
和'bar_code'
作为索引,可以调用.reset_index()
来重置索引。示例-演示-
是的,您可以这样做,在
agg
中您可以提到哪些聚合规则不能应用于每个列相关问题 更多 >
编程相关推荐