我有下表和字典,并希望根据以下公式计算按每个日期分组的加权平均值。如何通过熊猫数据框实现这一目标?注意:我无法在数据框中添加字典中的值的另一列,因为实际值具有高维,这将使数据框无法容纳内存。 enter image description here
Date ID count w_avg
01/01/2012 100 60 [0.791666667,0.791666667]
01/01/2012 101 80
01/01/2012 102 100
01/02/2012 201 100 [0.722222222, 0.722222222]
01/02/2012 102 80
dict= {'100':[0.5, 0.5], '101':[0.75,0.75] '102': [1.00,0.5], '201':[0.5,1.00]}
01/01/2012 w_avg = dict[100] * ( 60/ sum(60,80,100)) + dict[101] * (80/ sum(60,80,100)) + dict[102]* (100/sum(60,80,100))
01/02/2012 w_avg = dict[201] * ( 100/ sum(100,80)) + dict[102]* ( 80/ sum(100,80))
我尝试了以下代码,但是它不起作用:
df = df.groupby(['Date').apply(
lambda dfx: (dict[df['ID'].to_string(index=False, header=False).strip()] * dfx["count"])
.sum() / dfx["acount"].sum()).reset_index()