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

如何从DataFrame的字典列表列提取指定键生成新列

提取DataFrame字典列表列中的指定键值到新列

针对你的需求,这里提供两种常用解决方案,可根据你期望的最终数据结构选择:

方案1:将每个评论字典展开为单独行

如果需要把reviews列中每个字典对应的item_id和recommend单独成行,同时保留原数据的其他字段,用explode配合map即可实现:

import pandas as pd

# 示例数据(替换为你的实际DataFrame)
df = pd.DataFrame({
    'record_id': [101, 102],
    'reviews': [
        [{'item_id': 'PROD001', 'recommend': True, 'comment': 'Great product'}, 
         {'item_id': 'PROD002', 'recommend': False, 'comment': 'Not worth it'}],
        [{'item_id': 'PROD003', 'recommend': True, 'comment': 'Highly recommended'}]
    ]
})

# 展开reviews列的每个字典为单独行
df_expanded = df.explode('reviews', ignore_index=True)

# 提取指定键值到新列
df_expanded['item_id'] = df_expanded['reviews'].map(lambda x: x.get('item_id'))
df_expanded['recommend'] = df_expanded['reviews'].map(lambda x: x.get('recommend'))

# 可选:移除原reviews列
df_expanded = df_expanded.drop('reviews', axis=1)

print(df_expanded)

输出结果示例:

record_id  item_id  recommend
0        101  PROD001       True
1        101  PROD002      False
2        102  PROD003       True

方案2:保留原行,提取值为列表

如果希望保留原数据的行结构,把同一条记录下所有评论的item_id和recommend整理成列表作为新列:

import pandas as pd

# 示例数据(替换为你的实际DataFrame)
df = pd.DataFrame({
    'record_id': [101, 102],
    'reviews': [
        [{'item_id': 'PROD001', 'recommend': True}, 
         {'item_id': 'PROD002', 'recommend': False}],
        [{'item_id': 'PROD003', 'recommend': True}]
    ]
})

# 提取每个reviews列表中的item_id和recommend到新列
df['item_ids'] = df['reviews'].apply(lambda lst: [d.get('item_id') for d in lst])
df['recommends'] = df['reviews'].apply(lambda lst: [d.get('recommend') for d in lst])

# 可选:移除原reviews列
df = df.drop('reviews', axis=1)

print(df)

输出结果示例:

record_id         item_ids  recommends
0        101  [PROD001, PROD002]  [True, False]
1        102        [PROD003]         [True]

*注意:*如果你的reviews列存在空列表或None的情况,get方法会返回None,可根据需求添加默认值,比如x.get('item_id', '无数据')来替代None。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 12:30:54