我有一个这样的数据框:
VALUE ATTRIBUTE
300 K
200 B
100 CC
150 D
100 EF
150 G
100 T
200 D
300 EF
400 T
350 G
400 F
550 FE
600 EF
700 D
650 F
400 EF
300 R
对于每一行,我想在下一行中执行滚动窗口(大小= 5)并返回:
最大值
相关属性
例如,第一行(300 K)必须返回两个:
下5行的最大值=> 200
相关属性=> B
我将在以后的序列中执行滚动窗口(不在上一个序列中)。因此,我正在转移代码。
由于我能够返回MAX_VALUE,但是却不知道如何返回与最大值相关的ATTRIBUTE,因此我遇到了问题。以下是我当前正在运行的代码:
df['MAX_VALUE'] = df['VALUE'].rolling(5).max().shift(-5)
您对执行该功能有什么建议吗?
预期结果是:
VALUE ATTRIBUTE MAX_VALUE ATTRIBUTE_MAX_VALUE
300 K 200 B
200 B 150 D
100 CC 200 D
150 D 300 EF
100 EF 400 T
150 G 400 T
100 T 400 T
200 D 550 FE
300 EF 600 EF
400 T 700 D
350 G 700 D
400 F 700 D
550 FE 700 D
600 EF 700 D
700 D 650 F
650 F 400 EF
400 EF 300 R
300 R nan nan
非常感谢您的帮助 !!
最佳答案
#creating two more columns: 'Max' and 'Attribute Max'
df['Max']=0
df['Attribute Max']=0
#running a for loop for finding rolling max and its attributes
for i in range(0,len(df)-1):
df['Max'][i]=df['Value'][i+1:i+6].max()
# i+1 and i+6 are taken to consider from the next row till the next 5th row (6th row is excluded)
df['Attribute Max'][i]=df['Attribute'][df['Value'][i+1:i+6].idxmax(axis=0)]
print(df)
关于python - 数据框:使用“vlookup”滚动窗口,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53964725/