2017-10-15 77 views
-1

我有一个以下格式的json,它的一个文件存储在一个位置。在python中更新json和分组json

{"click_id": 123, "created_at": "2016-10-03T10:50:33", "product_id": 98373, "product_price": 220.50, "user_id": 1, "ip": "10.10.10.10"} 
{"click_id": 124, "created_at": "2017-02-03T10:51:33", "product_id": 97373, "product_price": 320.50, "user_id": 1, "ip": "10.10.10.10"} 
{"click_id": 125, "created_at": "2017-10-03T10:52:33", "product_id": 96373, "product_price": 20.50, "user_id": 1, "ip": "192.168.2.1"} 

我想知道如何聚合在Python JSON数据。 比如:我需要的,如果您的初始文件只是JSON串上的每个单独的行的文本文件采取的product_price分组的总和User_Id and IP

+0

这是无效的json,它可能是ndjson,由换行符分隔。你有什么尝试?关于如何处理json已经有大量的问题/答案,但你没有表现出任何努力。 – roganjosh

+0

@roganjosh我试过使用data = spark.createDataFrame( sc.textFile(“myfile.json”).map(lambda l:l.split(':')), [“clickid”,“createdat”,“请使用[ask]和其中包含的链接。 – Firstname

+0

欢迎来到SO。 “' – wwii

回答

0

- 采用如下方案:

import json, collections 

with open('myfile.json', 'r') as f: 
    result = collections.defaultdict(int) 
    for d in map(json.loads, f): 
     result[str(d['user_id']) +','+ d['ip']] += d['product_price'] 
    for k,sum in result.items(): 
     print('user_id: {}, ip: {}, sum: {}'.format(*k.split(','), sum)) 

示例输出:

user_id: 1, ip: 10.10.10.10, sum: 541.0 
user_id: 1, ip: 192.168.2.1, sum: 20.5