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

求助:将含字典列表的元组转换为非规范化DataFrame遇异常

问题:将包含字典列表的元组转换为Pandas DataFrame

我有一个元组,移除第二个元素后仅剩一个包含200个字典的列表,示例如下:

import datetime
mytuple= ([{'reviewId': '1234', 'userName': 'XXX', 'userImage': 'imagelink', 'content': 'AAA', 'score': 1, 'thumbsUpCount': 1, 'reviewCreatedVersion': '3.31.0', 'at': datetime.datetime(2022, 12, 1, 11, 49, 34), 'replyContent': "replycontent", 'repliedAt': datetime.datetime(2022, 12, 1, 12, 19, 51)}, 
           {'reviewId': '5678', 'userName': 'S L', 'userImage': 'imagelink2', 'content': "content2", 'score': 1, 'thumbsUpCount': 0, 'reviewCreatedVersion': '3.31.0', 'at': datetime.datetime(2022, 11, 29, 12, 27, 46), 'replyContent': "replycontent2", 'repliedAt': datetime.datetime(2022, 11, 29, 12, 30, 40)}])

我希望将其转换为以字典键为列名的DataFrame,预期格式如下:

reviewIduserNameuserImagecontentscorethumbsUpCountreviewCreatedVersionatreplyContentrepliedAt
1234XXXimagelinkAAA113.31.02022-12-01 11:49:34replycontent2022-12-01 12:19:51
5678S Limagelink2content2103.31.02022-11-29 12:27:46replycontent22022-11-29 12:30:40

即列名为字典的键,每行对应一个字典的键值对。

我尝试了以下三种方法:

df=pd.DataFrame(mytuple)
df=pd.DataFrame.from_dict(mytuple)
df=pd.json_normalize(mytuple)

但生成的DataFrame不符合预期,结果如下:

0123
{'reviewId': '1234', ...}{'reviewId': '5678', ...}{}{}

想知道哪里操作出错了?


解决方案

问题出在你传入的是元组,而Pandas的DataFrame()、from_dict()、json_normalize()都期望直接传入字典列表,而非包含列表的元组。你需要先提取元组中的字典列表,再传入Pandas方法:

方法1:提取元组第一个元素后转换

import pandas as pd
import datetime

mytuple= ([{'reviewId': '1234', ...}, {'reviewId': '5678', ...}])
# 提取元组内的字典列表
dict_list = mytuple[0]
# 转换为目标DataFrame
df = pd.DataFrame(dict_list)

方法2:用json_normalize直接提取列表

df = pd.json_normalize(mytuple[0])

以上两种方式都能生成符合预期、以字典键为列名的DataFrame。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 15:15:42