【发布时间】:2021-09-08 22:00:44
【问题描述】:
我正在尝试通过“plant_name”和“month”的 groupby 计算每个时间序列或数据值的权重,但我看不到解决方案。我的数据看起来像这样 -
plant_name month adjusted_wspd
0 ARIZONA I 1 7.62
1 ARIZONA I 2 7.37
2 ARIZONA I 3 6.72
3 ARIZONA I 4 6.67
4 ARIZONA I 5 7.07
5 ARIZONA I 6 7.53
6 ARIZONA I 7 8.09
7 ARIZONA I 8 8.83
8 ARIZONA I 9 9.41
9 ARIZONA I 10 9.44
10 ARIZONA I 11 8.92
11 ARIZONA I 12 8.37
12 CAETITE I 1 7.10
13 CAETITE I 2 7.27
14 CAETITE I 3 7.26
我尝试编写一个函数并将“应用”用于定义的函数,但我得到了一个错误的解决方案,看起来像这样,因为该函数可能计算错误:
ARIZONA I 1 1.0
2 1.0
3 1.0
4 1.0
5 1.0
6 1.0
7 1.0
8 1.0
9 1.0
10 1.0
11 1.0
12 1.0
CAETITE I 1 1.0
2 1.0
3 1.0
我的代码如下所示:
def my_agg(x):
names = {'Weigths_WSPD': (x['adjusted_wspd'] )/x['adjusted_wspd'].sum()}
return pd.Series(names, index=['Weights_WSPD'])
dfmm.groupby(["plant_name", "month"]).apply(my_agg)
我的答案应该是这样的百分比(%):
ARIZONA I 1 7.93
2 7.67
3 7.00
4 6.95
5 7.36
6 7.84
7 8.42
8 9.19
9 9.80
10 9.83
11 9.29
12 8.72
CAETITE I 1 33.82
2 33.61
3 33.56
谢谢!
【问题讨论】:
-
嗨 - 感谢您的帮助。上面显示的预期结果是用 excel 完成的。我明白答案是“1”,但我不知道如何更改函数以使其正常工作。
标签: pandas group-by apply weighted