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

如何为嵌套列表中的每个子列表在DataFrame中创建对应结果列

以下是基于Pandas的实现方案,采用向量化运算实现,性能远高于逐行apply方案,适合任意规模的数据集使用:

完整可运行代码示例

import pandas as pd
import numpy as np

# 替换为你自己的原始DataFrame
df = pd.DataFrame({
    'index': [4,2,5,4,1],
    'abc1': [87,87,87,87,87],
    'abc2': [94,94,94,94,94],
    'abc3': [34,34,34,34,34],
    'abc4': [28,28,28,28,28],
    'abc5': [43,43,43,43,43],
    'kh1': [1,2,3,4,5],
    'kh2': [6,7,8,9,10],
    'kh3': [11,12,13,14,15],
    'kh4': [16,17,18,19,20],
    'jpor1': [10,20,30,40,50],
    'jpor2': [60,70,80,90,100],
    'jpor3': [110,120,130,140,150],
    'jpor4': [160,170,180,190,200],
    'jpor5': [210,220,230,240,250]
})

# 定义你的嵌套列名列表和对应结果列名
datalist = [
    ['abc1', 'abc2', 'abc3', 'abc4', 'abc5'],
    ['kh1', 'kh2', 'kh3', 'kh4'],
    ['jpor1', 'jpor2', 'jpor3', 'jpor4', 'jpor5']
]
result_col_names = ['abc_result', 'kh_result', 'jpor_result']

# 核心逻辑:批量生成结果列
for cols, res_col in zip(datalist, result_col_names):
    # index转列位置下标,同时做边界保护,避免下标越界
    col_index = np.clip(df['index'].values - 1, 0, len(cols)-1)
    # 用numpy高级索引批量取值
    df[res_col] = df[cols].values[np.arange(len(df)), col_index]

# 查看输出结果
print(df)

说明

  • 上述代码中np.clip为可选的边界保护逻辑,当index列取值超过对应子列表长度时,会自动取子列表最后一个元素的值,不需要边界保护的可以去掉该方法直接使用df['index'].values -1即可
  • 运行后生成的abc_result列完全符合你给出的示例输出

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 22:36:03