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

如何更简洁地将列表与DataFrame合并并展开多值单元格为列?

问题:如何更简洁地将列表与DataFrame合并成指定格式?

输入数据

import pandas as pd

table = pd.DataFrame({'a':[0,0,0,0],'b':[1,1,1,3,],'c':[2,2,5,4],'d':[3,6,6,6]},dtype='float64')

id_list = [[55,66],
           [77]]

table 的初始输出:

a    b    c    d
0  0.0  1.0  2.0  3.0
1  0.0  1.0  2.0  6.0
2  0.0  1.0  5.0  6.0
3  0.0  3.0  4.0  6.0

预期输出

希望合并后得到:

a    b    c    d  ID_0   ID_1
0  0.0  1.0  2.0  3.0  55.0   66.0
1  0.0  1.0  2.0  6.0  77.0    NaN
2  0.0  1.0  5.0  6.0   NaN    NaN
3  0.0  3.0  4.0  6.0   NaN    NaN

现有实现方法

目前的实现分为三步:

Step 1:将列表转为Series并合并

x = pd.Series(id_list, name ="ID")
new = pd.concat([table, x], axis=1)

输出:

a    b    c    d      ID
0  0.0  1.0  2.0  3.0  [55, 66]
1  0.0  1.0  2.0  6.0    [77]
2  0.0  1.0  5.0  6.0     NaN
3  0.0  3.0  4.0  6.0     NaN

Step 2:拆分ID列并重命名

ID = new['ID'].apply(pd.Series)
ID = ID.rename(columns = lambda x : 'ID_' + str(x))
new_x = pd.concat([new[:], ID[:]], axis=1)

输出:

a    b    c    d      ID  ID_0  ID_1
0  0.0  1.0  2.0  3.0  [55, 66]   55.0   66.0
1  0.0  1.0  2.0  6.0    [77]  77.0   NaN
2  0.0  1.0  5.0  6.0     NaN   NaN   NaN
3  0.0  3.0  4.0  6.0     NaN   NaN   NaN

Step 3:删除原ID列

new_x = new_x.drop(columns=['ID'], axis = 1)

简洁实现方案

可以直接将列表转为带指定列名的DataFrame,再与原表合并,两步即可完成:

# 将列表转为DataFrame,自动补全缺失值,并重命名列
id_df = pd.DataFrame(id_list).rename(columns=lambda x: f'ID_{x}')
# 按列合并两个DataFrame,自动对齐索引补全NaN
result = pd.concat([table, id_df], axis=1)

甚至可以写成一行紧凑代码:

result = pd.concat([table, pd.DataFrame(id_list).rename(columns=lambda x: f'ID_{x}')], axis=1)

执行后直接得到预期输出:

a    b    c    d  ID_0   ID_1
0  0.0  1.0  2.0  3.0  55.0   66.0
1  0.0  1.0  2.0  6.0  77.0    NaN
2  0.0  1.0  5.0  6.0   NaN    NaN
3  0.0  3.0  4.0  6.0   NaN    NaN

原理说明

  • pd.DataFrame(id_list) 会自动处理不等长的列表,短列表对应的行自动填充NaN补全长度
  • rename(columns=lambda x: f'ID_{x}') 直接将默认的数字列名改为ID_0、ID_1的格式
  • pd.concat([table, ...], axis=1) 按列合并时,会自动对齐两个DataFrame的索引,原表中超出列表长度的行也会自动填充NaN

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 20:10:45