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

Pandas如何通过映射为新DataFrame中每行列表生成元素索引?

为存储列表的DataFrame列逐行生成元素位置索引

问题复现

初始DataFrame构造代码与数据结构:

import pandas as pd
df = pd.DataFrame({'Item': [['hi', 'hello', 'bye'], ['school', 'pen'], ['hate', 'love', 'feelings', 'sad']]})
print(df)

初始数据输出:

Item
0               [hi, hello, bye]
1                   [school, pen]
2  [hate, love, feelings, sad]

目标:新增mapped_value列,每一行的值为对应Item列表内元素的顺序位置索引,预期输出:

mapped_value
0                      [0, 1, 2]
1                         [0, 1]
2               [0, 1, 2, 3]

之前尝试的写法仅处理了第一行列表,无法适配全量数据:

# 错误示例:仅枚举了第一行df['Item'][0]的索引
df['mapped value'] = [i for i, x in enumerate(df['Item'][0])]

解决方法

核心逻辑是逐行读取Item列的每个列表,根据列表长度生成从0开始的连续整数序列即可,两种实现方式:

  • 使用apply逐行映射
df['mapped_value'] = df['Item'].apply(lambda x: list(range(len(x))))
  • 使用列表推导式处理,大数据量下性能优于apply
df['mapped_value'] = [list(range(len(single_list))) for single_list in df['Item']]

两种写法运行后输出结果完全匹配预期,不需要额外依赖第三方工具。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 06:34:03