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

如何将Pandas DataFrame中的列表列拆分为多列?

拆分Pandas DataFrame中列表列的最优方法

你要处理的是把DataFrame中存列表的列拆分成多列,同时保留其他列,下面是最实用的解决方案:

情况1:所有列表长度一致(比如你的示例里都是2个元素)

直接用Pandas原生的高效方法拆分,代码如下:

import pandas as pd

# 构造你的原始DataFrame
df = pd.DataFrame({'A': [[1,2], [3,4]], 'B': ['X', 'Y']})

# 把列A的列表拆成单独列,指定列名
expanded_cols = pd.DataFrame(df['A'].tolist(), index=df.index, columns=['A_0', 'A_1'])

# 和原DataFrame的B列合并,得到最终结果
final_df = pd.concat([expanded_cols, df['B']], axis=1)

情况2:列表长度不固定(有的长有的短)

如果列A里的列表长度不一样,我们可以自动根据最长的列表生成对应列名,短列表的空缺位置会自动填充NaN:

import pandas as pd

df = pd.DataFrame({'A': [[1,2], [3,4,5]], 'B': ['X', 'Y']})

# 拆分列表列,自动生成默认列名(0、1、2...)
expanded_cols = pd.DataFrame(df['A'].tolist(), index=df.index)
# 把默认列名改成A_0、A_1这种格式
expanded_cols.columns = [f'A_{i}' for i in expanded_cols.columns]

# 合并得到结果
final_df = pd.concat([expanded_cols, df['B']], axis=1)

你原代码的问题

你写的代码最后一行df[labels] = df[col]只是把原列表直接赋值给新列,并没有拆分列表,所以新列里还是存着列表,没有达到拆分的效果。上面的方法通过tolist()把列A的列表转换成二维数组,再用pd.DataFrame直接生成多列,是Pandas里效率最高的方式,比逐行apply处理快得多,尤其是数据量大的时候。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 00:22:03