如何将含列表值的字典转换为指定结构的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
相关产品推荐
相关产品推荐

