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

Pandas:如何拆分字典中的列表并生成新列

拆分DataFrame中列表列的解决方案

现有中间结果

经过你之前的代码处理后,得到的DataFrame如下:

A   opt_X    opt_Y
1   Room1    ['A1','A2']
2   Room2    ['B1', 'B2','B3']

完成剩余拆分的代码

直接执行以下代码即可将opt_Y列的列表拆分为多列,并填充长度不足的位置为0:

# 将opt_Y的列表转为DataFrame,缺失值补0
y_split = pd.DataFrame(df['opt_Y'].tolist(), index=df.index).fillna(0)
# 给拆分后的列重命名为opt_Y_1、opt_Y_2...
y_split.columns = [f'opt_Y_{col+1}' for col in y_split.columns]
# 合并到原DataFrame,删除原opt_Y列
df = df.join(y_split).drop('opt_Y', axis=1)

整合完整流程代码

如果要从原始DataFrame一步到位,完整代码如下:

import pandas as pd

# 原始DataFrame
df = pd.DataFrame({
    'A': [1, 2],
    'B': [[{'X': 'Room1', 'Y': ['A1', 'A2']}], [{'X': 'Room2', 'Y': ['B1', 'B2','B3']}]]
})

# 第一步:解析B列的字典
L = [pd.json_normalize(x) for x in df.pop('B')]
df = df.join(pd.concat(L, ignore_index=True, sort=False).add_prefix('opt_'))

# 第二步:拆分opt_Y的列表列
y_split = pd.DataFrame(df['opt_Y'].tolist(), index=df.index).fillna(0)
y_split.columns = [f'opt_Y_{col+1}' for col in y_split.columns]
df = df.join(y_split).drop('opt_Y', axis=1)

# 查看结果
print(df)

执行后得到目标结果:

A  opt_X opt_Y_1 opt_Y_2 opt_Y_3
1  Room1      A1      A2       0
2  Room2      B1      B2      B3

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 11:55:19