如何在Pandas中按Floor列分组,获取UV列绝对值最大的原始值?
按Floor分组获取UV列绝对值最大的原始值
原始DataFrame df_1:
Floor UV 1 1 -2 2 1 3 3 1 -5 4 1 4 5 2 14 6 2 -15
你当前使用的代码df_1.loc[df_1.groupby("Floor")["UV"].idxmax()]是直接取每组UV的最大值对应的行,不符合“取绝对值最大的原始值”的需求。
实现方案
核心思路是基于UV的绝对值判断每组的最大值位置,再定位原始行:
方法一:通过lambda表达式直接计算
output_df = df_1.loc[df_1.groupby("Floor")["UV"].apply(lambda x: x.abs().idxmax())]
方法二:添加临时绝对值列(更直观)
# 生成UV的绝对值临时列 df_1['UV_abs'] = df_1['UV'].abs() # 按Floor分组,获取每组UV_abs最大的行索引 max_abs_indices = df_1.groupby("Floor")["UV_abs"].idxmax() # 提取目标行并删除临时列 output_df = df_1.loc[max_abs_indices].drop('UV_abs', axis=1)
最终输出结果
Floor UV 3 1 -5 6 2 -15
内容的提问来源于stack exchange,提问作者Hür Doğan ÜNLÜ
相关产品推荐
相关产品推荐

