写代码时遇上一个分组取top的问题,要求分组取前三,但如果后面有跟第三并列的数值也要纳入进来,因此考虑使用apply函数。
def top3(df):
df_1 = df.head(3)
df_2 = df_1.iloc[-1] #前n条的最后一条
df_3 = pd.concat([df, df_1]).drop_duplicates(keep=False) #去除前n条的数据
df_4 = df_3[(df_3['到期收益率(%)']==df_2['到期收益率(%)'])] #在未选入的数据中查找
df_fin = pd.concat([df_1,df_4])
return df_fin
final3 = final2.groupby('发行人全称').apply(top3)
通过apply对分组的各组进行操作。