如何从DataFrame列的字典列表中动态提取键值生成新列?
解决DataFrame字典列表转动态列的方法
步骤说明
- 将DataFrame目标列中的每个字典列表转换为
{name: value}格式的字典 - 把字典转为单列DataFrame,自动提取
name作为列名 - 将新生成的DataFrame与原DataFrame合并,移除原目标列
代码实现
构造测试数据
import pandas as pd df = pd.DataFrame({ 'id': [1, 2], 'details': [ [{'name': 'Order Type', 'value': 'traditional'}, {'name': 'Delivery Window', 'value': '8 - 10'}, {'name': 'Delivery Day', 'value': 'Saturday'}], [{'name': 'Order Type', 'value': 'express'}, {'name': 'Delivery Window', 'value': '14 - 16'}, {'name': 'Delivery Day', 'value': 'Sunday'}] ] })
核心处理代码
# 转换字典列表为字典,再生成新列DataFrame new_columns = df['details'].apply(lambda x: {item['name']: item['value'] for item in x}).apply(pd.Series) # 合并原DataFrame与新列,移除原details列 final_df = pd.concat([df.drop('details', axis=1), new_columns], axis=1)
输出结果
执行后final_df的内容为:
id Order Type Delivery Window Delivery Day 0 1 traditional 8 - 10 Saturday 1 2 express 14 - 16 Sunday
内容的提问来源于stack exchange,提问作者ben890
相关产品推荐
相关产品推荐

