You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于指定列分组用循环取另一列最小值行并合并为单个DataFrame?

实现方案

你不需要手动提取行业唯一值写循环,用Pandas原生的分组方法即可高效完成需求,10万行数据、动态变化的30个行业都可以直接适配,运行效率远高于自定义循环。
核心实现代码如下:

# 生成布尔掩码:标记每行是否属于所在行业的Amount outstanding最小值行
min_row_mask = df['Amount outstanding'] == df.groupby('Industry')['Amount outstanding'].transform('min')
# 筛选行并重置索引得到结果表
Min_Value = df[min_row_mask].reset_index(drop=True)

上述代码的transform方法会把每个行业分组的最小值广播到组内所有行的位置,生成和原DataFrame长度一致的布尔数组,筛选后会自动保留同一行业下所有达到最小值的行,完全匹配你的需求。

如果你需要按你原本的循环思路实现,参考写法如下(性能低于上述原生方法,仅做参考):

# 提取所有唯一行业
industry_list = df['Industry'].unique()
Min_Value = pd.DataFrame()
# 遍历每个行业筛选最小值行
for industry in industry_list:
    # 筛选当前行业的所有行
    industry_df = df[df['Industry'] == industry]
    # 取当前行业最小值
    industry_min = industry_df['Amount outstanding'].min()
    # 筛选当前行业最小值行
    min_rows = industry_df[industry_df['Amount outstanding'] == industry_min]
    # 合并到结果表
    Min_Value = pd.concat([Min_Value, min_rows], ignore_index=True)

两种方法在你给出的示例数据上运行,得到的Min_Value结果一致:

Security IDIndustryAmount outstanding
we9lklAirplanes31
as5322Oil21
ot24tasHousing29
c34ci46a8Trucking29

内容的提问来源于stack exchange,提问作者Sumit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 00:39:00