我有一个数据框df,其中包含三列,如下所示:
Date ID Number
2018-01-01 a 10
2018-01-08 a 7
2018-01-15 a 6
2018-01-22 a 9
2018-01-29 a 5
2018-02-05 a 6
2018-02-12 a 6
2018-02-19 a 5
2018-02-26 a 2
2018-01-15 b 7
2018-01-22 b 8
2018-01-29 b 6
2018-02-05 b 1
2018-02-12 b 1
2018-02-19 b 10
2018-02-26 b 10
我想编写一个函数,其中对于每个ID,我需要计算第n个和第n-1个最大值,并使用这些值来计算一些公式。这是代码
def L_DF(s):
temp1 = df.loc[df.ID.isin(s)]
n =temp1['Number'].shape[0]
y = int((n+1)*0.8)
w = (n+1)*0.8-y
if (n+1)*0.8>n:
return (temp1['Number'].sort_values().iloc[n-1])
else:
return ((1-w)*temp1['Number'].sort_values().iloc[y-1] + w*temp1['Number'].sort_values().iloc[y])
我想在上面的数据框中使用此功能,并希望在下面的数据框中进行输出
ID Value of Function
a 9
b 9
此代码给出了错误。有人可以帮忙解决问题吗