groups = dfgroupbyTrainIndex data = pdDataFrame # 遍历分组最后一个站的first内容需要替换 第一个站的last需要替换 for name group in groups # 对seq进行排序获取首站和末站的站序号 groupseq_min = groupVia_Seqmin # 获取倒数
可以使用apply函数代替遍历分组,apply函数可以对每个分组进行操作,可以提高代码效率,如下所示:
def add_features(group):
group["seq_min"] = group['Via_Seq'].min()
group["second_smallest"] = group['Via_Seq'].nsmallest(2).iloc[-1]
group["second_largest"] = group['Via_Seq'].nlargest(2).iloc[-1]
group["seq_max"] = group['Via_Seq'].max()
return group
data = df.groupby(['TrainIndex']).apply(add_features).reset_index(drop=True)
这里定义了一个函数add_features,对每个分组进行操作,并返回处理后的数据。然后使用apply函数将这个函数应用于每个分组,最后使用reset_index函数将结果重新设置索引。这个方法比遍历分组要快很多
原文地址: https://www.cveoy.top/t/topic/c1oC 著作权归作者所有。请勿转载和采集!