如何对Dataframe进行分组,将指定列的重复值聚合为列表
你可以直接在groupby的聚合方法中传入自定义聚合逻辑实现需求,无需使用sum()、count()这类预设聚合函数,以下是不同需求场景的实现方式:
场景1:分组后对应值存储为列表
运行如下代码即可:
import pandas as pd # 你的原始DataFrame df = pd.DataFrame({ 'Animal': ['Falcon', 'Falcon', 'Parrot', 'Parrot'], 'Max Speed': [380.0, 370.0, 24.0, 26.0] }) # 分组聚合为列表 res = df.groupby('Animal', as_index=False)['Max Speed'].agg(list)
运行后res的结构:
| Animal | Max Speed |
|---|---|
| Falcon | [380.0, 370.0] |
| Parrot | [24.0, 26.0] |
场景2:分组后对应值存储为逗号分隔的字符串(匹配你给出的预期输出格式)
运行如下代码即可:
res = df.groupby('Animal', as_index=False)['Max Speed'].agg(lambda x: ', '.join(map(str, x)))
运行后res的结构和你给出的预期输出完全一致:
| Animal | Max Speed |
|---|---|
| Falcon | 380.0, 370.0 |
| Parrot | 24.0, 26.0 |
拓展:转为字典格式
如果需要最终输出为字典,在聚合后的结果后调用.to_dict()方法即可,示例:
# 生成键为Animal、值为速度列表的字典 res_dict = df.groupby('Animal')['Max Speed'].agg(list).to_dict() # 输出结果:{'Falcon': [380.0, 370.0], 'Parrot': [24.0, 26.0]}
内容的提问来源于stack exchange,提问作者Kronos733
相关产品推荐
相关产品推荐

