我有一个包含许多组的大型DataFrame。 我想要做的是迭代每个组,并且根据是否满足某个条件,我想总结该组的值。
我的DataFrame看起来像这样:
Item_Num Price_Change Unit_Sales
10 True 10
10 False 15
10 False 11
10 False 13
12 True 10
12 False 11
12 False 14
12 True 11
12 False 11
对于每组Item_Num,我想记录当该行的价格发生变化时的单位销售总和,直到另一次价格变动为止。所以,我想要这样的结果:
0 Item_Num Price_Change Unit_Sales Sum
1 10 True 10 49
2 10 False 15
3 10 False 11
4 10 False 13
5 12 True 10 34
6 12 False 11
7 12 False 14
8 12 True 11 22
9 12 False 11
(所以我通过将行1到4相加得到49的总和,通过将行5-7相加得到34的总和,并通过对行8和9求和得到和22)。
这是我到目前为止(草图):
for name, group in new.groupby('UPC'):
if ['Price_Change'] == True:
sum(unit_sales until next price change)
迭代每个组的最佳方法是什么(可以改进我的方法)以及如何选择Price_Change == True的行?
答案 0 :(得分:1)
非常接近您之前的问题:-)
df['New']=df.groupby([df['Item_Num'],df['Price_Change'].cumsum()])['Unit_Sales'].transform('sum')
df
Out[15]:
Item_Num Price_Change Unit_Sales New
0 10 True 10 49
1 10 False 15 49
2 10 False 11 49
3 10 False 13 49
4 12 True 10 35
5 12 False 11 35
6 12 False 14 35
7 12 True 11 22
8 12 False 11 22
df.New=df.New.where(df['Price_Change'],'')
df
Out[17]:
Item_Num Price_Change Unit_Sales New
0 10 True 10 49
1 10 False 15
2 10 False 11
3 10 False 13
4 12 True 10 35
5 12 False 11
6 12 False 14
7 12 True 11 22
8 12 False 11