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

基于ID将Pandas DataFrame中列的唯一值转换为列表并生成新DataFrame

解决方法:按ID分组聚合为唯一值列表

你可以通过groupby结合agg方法轻松实现这个需求,核心思路是按ID分组后,提取value和group列的唯一值并转为列表。

步骤1:导入Pandas并创建原始DataFrame

import pandas as pd

df = pd.DataFrame({
    'ID': ['A', 'A', 'A', 'B', 'B', 'B', 'B'],
    'value': [1, 1, 1, 1, 2, 2, 2],
    'group': [1, 2, 3, 2, 2, 2, 3]
})

步骤2:分组并生成唯一值列表

使用groupby('ID')按ID分组,对value和group列分别应用lambda x: list(pd.unique(x)),就能得到每个ID对应的唯一值列表:

df_new = df.groupby('ID').agg({
    'value': lambda x: list(pd.unique(x)),
    'group': lambda x: list(pd.unique(x))
}).reset_index()

验证结果

运行代码后,df_new的输出完全符合你的预期:

print(df_new)
# 输出:
#   ID    value      group
# 0  A      [1]  [1, 2, 3]
# 1  B  [1, 2]     [2, 3]

补充说明

  • pd.unique()会保留值首次出现的顺序,比用set()更贴合常规需求
  • reset_index()用于把分组的ID从索引转回普通列,确保结构和预期一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 08:32:56