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

如何删除pandas dataframe中同公司重复行,仅保留成交量最高的条目?

实现逻辑

核心是按公司名称分组,筛选每组内成交量最高的条目即可,两种常用实现方案如下:
Dataframe


方法1:排序后去重(最简洁)

逻辑是先按成交量降序排序,再按公司名称去重,自动保留每组第一条也就是成交量最高的条目:

# 假设你的DataFrame名为stock_df,成交量字段名为volume,公司名称字段名为company_name
res_df = stock_df.sort_values('volume', ascending=False).drop_duplicates('company_name', keep='first')
# 如果需要保持原表的行顺序,可再加一步按原索引排序
res_df = res_df.sort_index()

方法2:分组取最大值索引(性能更高,适合大数据量)

逻辑是直接按公司分组,取每组成交量最大值对应的行索引,再筛选原表:

# 取每组成交量最高的行索引
max_volume_idx = stock_df.groupby('company_name')['volume'].idxmax()
# 按索引筛选行得到结果
res_df = stock_df.loc[max_volume_idx].reset_index(drop=True)

注意事项

  • 执行前先确认成交量volume字段为数值类型,如果是字符串格式可先转换:stock_df['volume'] = stock_df['volume'].astype(int)
  • 如果同公司存在多条成交量同为最高的条目,上述两种方法默认只保留第一条,若需要全部保留可以用如下逻辑:
res_df = stock_df[stock_df.groupby('company_name')['volume'].transform(lambda x: x == x.max())]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 02:39:02