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

如何基于Pandas DataFrame列值提取列表列的指定元素?

Pandas根据另一列值从列表列选取元素

你的需求是根据value列的索引值,从list_column列的列表中提取对应位置的元素,之前的方法失效是因为str[]仅支持标量索引,无法直接传入Series实现逐行匹配。下面给出两种可行方案:

方法1:逐行apply处理(适合小数据集)

通过apply遍历每行数据,用当前行的value作为索引,从list_column的列表中取元素:

import pandas as pd

# 构造示例DataFrame
df = pd.DataFrame({
    'list_column': [['a', 'b', 'c'], ['a', 'b', 'c'], ['a', 'b', 'c']],
    'value': [0, 2, 1]
})

# 添加selected列
df['selected'] = df.apply(lambda row: row['list_column'][row['value']], axis=1)

方法2:向量化numpy操作(适合大数据集,效率更高)

把列表列转成二维numpy数组,再结合行索引和value列的索引值批量提取元素:

import pandas as pd
import numpy as np

df = pd.DataFrame({
    'list_column': [['a', 'b', 'c'], ['a', 'b', 'c'], ['a', 'b', 'c']],
    'value': [0, 2, 1]
})

# 转成二维数组后按位置提取
arr = np.array(df['list_column'].tolist())
df['selected'] = arr[np.arange(len(df)), df['value']]

两种方法执行后,都会得到你期望的结果:

list_column  value selected
0  [a, b, c]      0        a
1  [a, b, c]      2        c
2  [a, b, c]      1        b

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 21:40:35