如何在筛选TO_ID时获取最小值对应的整行含列名数据?
获取最小值对应的完整行数据
以下几种方法可以直接实现你想要的效果:
方法1:通过索引定位目标行
先筛选出TO_ID等于7的子数据集,再找到DURATION_H列最小值对应的行索引,最后通过索引提取整行:
# 筛选TO_ID=7的行 df_temp = df_A2C.loc[df_A2C['TO_ID'] == 7] # 获取最小值对应的行索引 min_row_index = df_temp['DURATION_H'].idxmin() # 取出整行(Series格式) min_row = df_temp.loc[min_row_index] print(min_row) # 若要保留DataFrame格式(带列名的表格形式) min_row_df = df_temp.loc[[min_row_index]] print(min_row_df)
方法2:链式条件筛选一步完成
直接通过组合条件筛选出符合要求的行,无需中间变量:
# 先计算TO_ID=7时DURATION_H的最小值,再筛选对应行 min_value = df_A2C.loc[df_A2C['TO_ID'] == 7, 'DURATION_H'].min() min_row = df_A2C.loc[(df_A2C['TO_ID'] == 7) & (df_A2C['DURATION_H'] == min_value)] print(min_row)
方法3:用nsmallest()快速取最小行
nsmallest()可以直接提取指定列最小的N行,这里取1行即可:
# 筛选TO_ID=7的行后,取DURATION_H最小的1行 min_row = df_A2C[df_A2C['TO_ID'] == 7].nsmallest(1, 'DURATION_H') print(min_row)
这个方法返回的是标准DataFrame格式,自动保留所有列名,输出效果和你期望的一致。
内容的提问来源于stack exchange,提问作者user20184312
相关产品推荐
相关产品推荐

