我想创建一个按商店分组的新数据框,为每个商店创建几列新的摘要。在下面的示例中,我想为每个商店创建四个变量。变量类似于excel中的sumif和countif,但针对每个组(存储)进行计算。
我尝试了各种形式的groupby和agg函数。我认为我应该使用lambda,但是我不确定如何构造该语法以便一次创建多个变量。
import pandas as pd
import numpy as np
n = 20
df = pd.DataFrame({'Store': np.random.choice(['Store_1', 'Store_2'], n),
'Revenue': (np.random.random(n) * 50 + 10).round(2)
})
df
因此,我可以轻松计算关于收入的多个汇总指标。我不知道如何创建自定义汇总度量值,例如sumif或countif:
df2 = df.groupby('Store')['Revenue'].agg({'Rev_sum': 'sum', 'Rev_max': 'max'})
对于每个商店(例如store_1,store_2),我都希望如上所述在新数据框中添加四个变量(例如Rev_sum_great_50等)
答案 0 :(得分:0)
df2 = df.groupby('Store')['Revenue'].agg({'Pos_Rev_Sum': lambda x: np.sum(np.where(x>0)), 'Pos_Rev_Cnt": lambda x: np.count_nonzero(np.where(x>0))})
这是其余前两列的解决方案。