如何通过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
相关产品推荐
相关产品推荐

