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

如何通过groupby和.first()函数批量获取指定列的首个值?

按分组一次性获取多列的首次出现值

现有DataFrame

Id       col_1        col_2       col_3         col_4
A         3             6          6              2
A         3             6          6              5
A         3             6          6              4
B         2             4          4              6
B         2             4          4              6

预期DataFrame

Id       col_1        col_2       col_3         
A         3             6          6              
B         2             4          4 

解决方案

完全可以一次性获取多列的首个值,只需在groupby后传入目标列名的列表,再调用first()方法即可:

# 指定需要提取首次值的列
target_columns = ['col_1', 'col_2', 'col_3']
new_df = df.groupby('Id')[target_columns].first().reset_index()

说明

  • 传入列名列表后,groupby会对列表中的每一列单独应用first()方法,提取每组内该列的第一个出现值
  • reset_index()用于将分组键Id从索引转换为普通列,保证结果结构与预期一致

如果需要保留所有非分组列的首个值,也可以直接省略列名列表(df.groupby('Id').first().reset_index()),但这种方式会包含col_4的首个值,若仅需指定列,建议明确传入列名列表更精准。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 07:00:56