1、分组排名取第n个
1、先排序后分组
ans_fund_nav = ans_fund_nav.sort_values(by=['KEY1', 'TRADE_DT']).groupby('KEY1')
2、取第一个
ans_fund_nav_st = ans_fund_nav.head(1)[['KEY1', 'VLU']]
2、分组排名用apply函数
ans_fund_nav = ans_fund_nav.sort_values(by=['KEY1', 'TRADE_DT'])\
.groupby('KEY1')\
.apply(lambda x: maxDownSide(list(x['VALUE']))).reset_index()
# 最大回撤函数
from random import randint
def maxDownSide(dataList=[]):
"""
函数名: 最大回撤
:param dataList: 数据列表 [2, 1.8, 1.1 3, 2.1]
:return: 最大回撤的值
"""
# 定义最大的元素和最大回撤初始值为0
maxVlu = maxDown = 0
if len(dataList) == 0 or dataList is None:
raise Exception("maxDownSide参数的长度为0或为None")
# 计算最大回撤
for i in range(1, len(dataList)):
# 每次取截止到当前元素最大的值,孰大取谁