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

如何在Pandas DataFrame中将元组/列表按指定规则拆分至新列

Pandas提取嵌套列表元素生成新列

问题描述

现有Pandas DataFrame的col1列包含嵌套列表数据:

col1
[[1,2],[3,4],[5,6],[7,8],[9,10],[11,12]]
[[13,14],[15,16],[17,18],[19,20],[21,22],[23,24]]

需要将每行中6个二元子列表的第一个元素汇总为col2,第二个元素汇总为col3,最终得到如下结构:

col2                    col3
[1,3,5,7,9,11]          [2,4,6,8,10,12]
[13,15,17,19,21,23]     [14,16,18,20,22,24]

解决方案

方法一:列表推导式 + apply(简洁直观)

通过apply遍历col1的每一行,用列表推导式提取每个子列表的对应元素:

import pandas as pd

# 构造示例数据
data = {
    'col1': [
        [[1,2],[3,4],[5,6],[7,8],[9,10],[11,12]],
        [[13,14],[15,16],[17,18],[19,20],[21,22],[23,24]]
    ]
}
df = pd.DataFrame(data)

# 生成新列
df['col2'] = df['col1'].apply(lambda x: [item[0] for item in x])
df['col3'] = df['col1'].apply(lambda x: [item[1] for item in x])

# 保留目标列
df = df[['col2', 'col3']]

方法二:利用Pandas内置方法(大数据量更高效)

将每行的嵌套列表转为临时DataFrame,再通过agg(list)汇总元素,适合数据量较大的场景:

df[['col2', 'col3']] = df['col1'].apply(
    lambda x: pd.DataFrame(x).agg(list).T
)

输出结果

col2                     col3
0  [1, 3, 5, 7, 9, 11]  [2, 4, 6, 8, 10, 12]
1  [13, 15, 17, 19, 21, 23]  [14, 16, 18, 20, 22, 24]

内容的提问来源于stack exchange,提问作者Rajan Kumar Yadav

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 19:35:19