【发布时间】:2015-05-16 11:31:30
【问题描述】:
我是 python 新手,遇到一些概念上非常简单的问题。我已经阅读了许多 SO 帖子,但仍然无法解决我的问题。
我有一个功能可以将亚马逊评论转换为 json 格式。每条评论都成为一个 json 对象。我想在单个数据框中编译所有评论,将 json 键作为列,每条评论连续。
有大量评论,每条评论格式如下:
{
"product/productId": "B00006HAXW",
"product/title": "Winnie the Pooh",
"product/price": "unknown",
"review/userId": "A1RSDE90N6RSZF",
"review/profileName": "piglet",
"review/helpfulness": "9/9",
"review/score": "5.0",
"review/time": "1042502400",
"review/summary": "Love this book",
"review/text" : "Exciting stories about highly intelligent creatures, very inspiring!"
}
如何将所有评论编译成 pandas 数据框?我有两个不同的问题:
-
如何将所有评论汇总到一个对象中?目前,输出是这样生成的:
for e in parse("reviews.txt.gz"): print json.dumps(e)
我尝试创建一个空的list 并使用append:
for e in parse("reviews.txt.gz"):
revs = []
revs = revs.append(json.dumps(e))
但这不起作用 - print revs 打印出来
None
None
None
- 当我对上述格式的单个评论使用
pd.read_json时,它返回“如果使用所有标量值,则必须传递一个索引”。这是否意味着我没有有效的 json 格式数据?
【问题讨论】:
-
看起来您正在为每个循环使用
revs = []重新初始化一个空列表,然后将revs重新分配给list.append调用的输出(即None;list.append修改了原来的list)。此外,您可能不需要json.dumps(e)调用,您需要一个 python 对象列表而不是 json 对象。 -
位
parse("reviews.txt.gz")工作吗?这就是您发布的示例 json 的原因吗? -
@cphlewis 是的,示例 json 格式的评论是由
parse("file")生成的。 -
@jeff 当然,必须在循环外初始化列表。谢谢。