2017-10-15 68 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