我尝试合并groupby/cumsum使用的产品表达式,因为产品的唯一目的是创建临时持有值。
data = {
'trial': pd.Series([1, 2, 3, 4, 5, 6, 7]),
'event': pd.Series(['A','A','A','B','B','B','C']),
'weight': pd.Series([1,2,4,5,5,3,1]),
'score': pd.Series([100,100,50,80,80,100,60])
}
df = pd.DataFrame(data)
df['tmp_product'] = df['weight'] * df['score'] # (1)
df['accum_product'] = df.groupby('event')['tmp_product'].cumsum() # (2)
del df['tmp_product']
print(df.head())
trial event weight score accum_product
0 1 A 1 100 100
1 2 A 2 100 300
2 3 A 4 50 500
3 4 B 5 80 400
4 5 B 5 80 800
上面的代码确实可以工作,但是当我试图将#1和#2组合在一起时,它失败了(如下所示):
df['accum_product'] = df.groupby('event').apply(lambda x: x['weight'] * x['score'], axis=1).cumsum()
是否有任何解决方案来合并上述#1/#2 df表达式?
1条答案
按热度按时间67up9zun1#
您可以使用
mul
并将其与GroupBy.cumsum
链接:或者按照@Chrysophylaxs的建议,使用
eval
:输出: