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

如何在pandas DataFrame中对列表元素实现唯一值映射编号?

pandas实现DataFrame列表元素的全局唯一值连续整数映射

实现代码

直接按下面的逻辑写即可,最终输出和你给出的示例完全一致:

import pandas as pd

# 初始化示例数据
df = pd.DataFrame({
    'raw_col': [
        ['phone', 'laptop'],
        ['life', 'death', 'mortal'],
        ['happy']
    ]
})

# 第一步:展平所有列表,收集全局唯一元素,生成从1开始的连续编号映射
all_elements = []
for item_list in df['raw_col']:
    all_elements.extend(item_list)
# pd.unique会保留元素第一次出现的顺序,保证编号和示例匹配
id_mapping = {val: idx for idx, val in enumerate(pd.unique(all_elements), start=1)}

# 第二步:逐行替换列表内的元素为对应编号
df['mapped_col'] = df['raw_col'].apply(lambda x: [id_mapping[item] for item in x])

运行后查看df['mapped_col']结果:

0       [1, 2]
1    [3, 4, 5]
2          [6]
Name: mapped_col, dtype: object

之前写法报错的核心原因

  • 直接对存储列表的列调用map():map的处理粒度是单元格整体(也就是每个列表本身),不会自动遍历列表内部的单个元素,要么触发键值/类型错误,要么返回结果完全不符合预期。
  • 逐行对列表使用enumerate:enumerate只会给当前列表单独生成序号,每遍历一行序号就会重新从起始值开始计数,既做不到全局连续编号,遇到跨列表重复的元素还会分配多个不同ID,不符合唯一映射的要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 09:54:21