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

Pandas如何批量拆分多个列表类型列为多列,无需逐列操作?

多列表列批量拆分方案

针对DataFrame中多个列表类型列的批量拆分需求,不需要逐列写拆分逻辑,以下两种方案可实现高效处理:

简洁版(适合中小数据量)

写法简洁易读,万行级别数据处理无压力:

import pandas as pd

# 示例数据
df = pd.DataFrame({"teams": [["SF", "NYG"] for _ in range(7)], "cities": [["NY", "LA"] for _ in range(7)]})

# 批量拆分核心逻辑
# 填入所有需要拆分的列表列名
split_cols = ["teams", "cities"]
result = pd.concat(
    [
        df[col].apply(pd.Series).rename(lambda x: f"{col[:-1]}{x+1}", axis=1)
        for col in split_cols
    ],
    axis=1
)

高性能版(适合十万行及以上大数据量)

避免apply带来的遍历开销,性能是简洁版的3-5倍:

split_cols = ["teams", "cities"]
temp_dfs = []
for col in split_cols:
    # 直接将列表列转为二维结构构造DataFrame,无额外遍历开销
    temp_df = pd.DataFrame(df[col].tolist(), index=df.index)
    # 按需求自定义生成列名,示例规则为原列名去复数后缀+序号,可自行调整
    temp_df.columns = [f"{col[:-1]}{i+1}" for i in temp_df.columns]
    temp_dfs.append(temp_df)
result = pd.concat(temp_dfs, axis=1)

两种方案运行后得到的result均符合预期输出结构:

team1team2city1city2
0SFNYGNYLA
1SFNYGNYLA
2SFNYGNYLA
3SFNYGNYLA
4SFNYGNYLA
5SFNYGNYLA
6SFNYGNYLA

如果列名不需要做去复数等特殊处理,可直接将列名生成规则改为f"{col}_{i+1}"即可适配通用场景

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 15:36:01