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

如何将含列表值的字典转换为指定结构的DataFrame

将字典转换为包含展开列表元素的DataFrame

针对你的需求,这里提供几种简洁的pandas实现方式:

方法一:使用from_dict + stack

这种方法利用pandas的索引操作快速展开数据:

import pandas as pd

# 避免使用内置函数名`dict`作为变量名
my_dict = {'Group1':[3,5,7],'Group2':[78,98,54],'Group3':[100,112,140]}

# 从字典构造DataFrame,将key作为行索引
df = pd.DataFrame.from_dict(my_dict, orient='index').stack().reset_index()
# 重命名列并清理多余字段
df.columns = ['key', '_', 'value']
df = df.drop('_', axis=1)
# 将key转为小写,调整列顺序
df['key'] = df['key'].str.lower()
df = df[['value', 'key']]

方法二:列表推导式构造数据(直观易懂)

手动遍历字典生成结构化数据,再转为DataFrame:

import pandas as pd

my_dict = {'Group1':[3,5,7],'Group2':[78,98,54],'Group3':[100,112,140]}

# 遍历字典生成每个(value, key)对
data = [{'value': val, 'key': key.lower()} for key, vals in my_dict.items() for val in vals]
df = pd.DataFrame(data)

方法三:使用explode(pandas 0.25+版本适用)

先构造包含列表的DataFrame,再通过explode展开列表元素:

import pandas as pd

my_dict = {'Group1':[3,5,7],'Group2':[78,98,54],'Group3':[100,112,140]}

# 初始构造key和对应列表的DataFrame
df = pd.DataFrame({'key': my_dict.keys(), 'value': my_dict.values()})
# 转换key为小写并展开列表
df['key'] = df['key'].str.lower()
df = df.explode('value').reset_index(drop=True)
# 调整列顺序
df = df[['value', 'key']]

以上三种方法都能生成你需要的DataFrame结构,其中方法二逻辑最直观,适合新手理解;方法一和三更偏向pandas原生操作,效率较高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 02:40:32