Pandas按首列分组去重后将其余列值存储为列表的实现咨询
解决方案
你之前的代码仅指定了Year单列做聚合,因此其余列会被丢弃,直接对分组后的全量列执行聚合操作即可实现需求:
- 全列统一转为元组(匹配你期望的输出格式):
# 注意location列名大小写要和你实际DataFrame的列名保持一致 df_result = df_gdp_pop_years.groupby('location', as_index=False).agg(tuple)
如果需要存为列表格式,把agg的入参换成list即可。
- 若存在部分列需要特殊聚合规则的场景,可通过字典指定不同列的聚合逻辑,示例如下:
# 例如year和GDP列存为元组,人口列取平均值,其余列自动忽略 df_result = df_gdp_pop_years.groupby('location', as_index=False).agg( year = ('year', tuple), GDP = ('GDP', tuple), pop_avg = ('population', 'mean') )
效果验证
用你提供的样例数据测试,输入:
location year GDP 0 AUT 1998 14... 1 AUT 2018 98... 2 AUS 1998 24... 3 AUS 2018 83...
执行第一种方案后输出:
location year GDP 0 AUT (1998, 2018) (14..., 98...) 1 AUS (1998, 2018) (24..., 83...)
完全匹配预期效果。
内容的提问来源于stack exchange,提问作者Jana
相关产品推荐
相关产品推荐

