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

如何将含列表值的字典转换为多行Pandas DataFrame?

解决字典转DataFrame时拆分列表为单独行的问题

嘿,我懂你现在的烦恼——你想把字典里每个键对应的列表元素都拆成独立的行,但当前写法只是把整个列表塞进了DataFrame的单个单元格里对吧?别担心,有两种简单的方法能搞定这个事儿:

方法一:用explode()快速拆分(Pandas 0.25及以上版本支持)

这是最直接的方案,先按你原来的方式生成初始DataFrame,再用explode()把Values列的列表拆成单独行:

import pandas as pd

d = {'Car':['1','2','3'], 'Chicken legs':['4','5','6'], 'Coronary artery bypass graft surgery':['7','8','9','10','11','12']}
df = pd.DataFrame({'Thing':list(d.keys()), 'Values':list(d.values())})
# 核心步骤:拆分Values列的列表元素为独立行
df_exploded = df.explode('Values', ignore_index=True)
print(df_exploded)

运行后会得到你想要的结果:

Thing Values
0                                    Car      1
1                                    Car      2
2                                    Car      3
3                           Chicken legs      4
4                           Chicken legs      5
5                           Chicken legs      6
6  Coronary artery bypass graft surgery      7
7  Coronary artery bypass graft surgery      8
8  Coronary artery bypass graft surgery      9
9  Coronary artery bypass graft surgery     10
10 Coronary artery bypass graft surgery     11
11 Coronary artery bypass graft surgery     12

ignore_index=True是为了让新DataFrame生成连续的索引,避免原索引重复的问题。

方法二:提前展开字典(兼容所有Pandas版本)

如果你用的Pandas版本比较旧,不支持explode(),可以先用列表推导式把字典展开成(键, 值元素)的元组列表,再构造DataFrame:

import pandas as pd

d = {'Car':['1','2','3'], 'Chicken legs':['4','5','6'], 'Coronary artery bypass graft surgery':['7','8','9','10','11','12']}
# 先把字典拆成(Thing, Value)的元组集合
data_list = [(key, val) for key, vals in d.items() for val in vals]
df = pd.DataFrame(data_list, columns=['Thing', 'Values'])
print(df)

这个方法的输出和上面完全一致,而且不需要依赖特定版本的Pandas,兼容性拉满。

两种方法都能完美解决你的需求,选哪种看你用的Pandas版本就好~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:33:59