在Python中将两个json键值paris合并为一个新的键值对



因此,基于一些反馈,我对代码进行了一些扩展,因为我实际上是先获取一个更大的csv并对其进行转换。我试图输出的实际上是与转换相关的代码:

def doThings(infile, outfile):
    f = pd.read_csv(infile)
    hmCols = {"timestamp": [], "value": []}    
for i, row in f.iterrows():
    total = row["Playspace_1"] + row["Playspace_2"] + row["Playspace_3"] + row["Playspace_4"]
    hmCols["timestamp"].append(row["Timestamp"])
    hmCols["value"].append(total)

pd.DataFrame(hmCols).to_json(outfile, orient="records")
doThings("test.csv", "heatmapData.json")

现在它输出为:

[{"timestamp":1417982808063,"value":1},{"timestamp":1417982808063,"value":1},{"timestamp":1417982808753,"value":1},{"timestamp":1417982811944,"value":1}...]

我需要的是它像:

[{"1417982808063":1},{"1417982808063":1},{"1417982808753":1},{"1417982811944":1}...]

任何关于如何进行此转换的帮助都将不胜感激

dic_in = [
    {"timestamp":1417982808063,"value":1},
    {"timestamp":1417982808063,"value":1},
    {"timestamp":1417982808753,"value":1},
    {"timestamp":1417982811944,"value":1}
]
dic_out = [{i['timestamp']: i['value']} for i in dic_in]

。。。只需使用csv.reader

  f = csv.reader(some_file_handle)
  next(f) #skip header
  json.dump(dict((row[0],sum(map(int,row[1:]))) for row in f),open("output.json","wb"))  

我认为至少。。。无需测试

这假设in_file.csv看起来有点像

timestamp,Playspace_1,Playspace_2,Playspace_3,Playspace_4
123      ,0          ,1          ,0          ,0
....

(我根据你对原始问题的评论取消了这个答案)

如果你真的嫁给了熊猫,我想你可以做一些类似的事情

totals = f["Playspace_1"] + f["Playspace_2"] + f["Playspace_3"] + f["Playspace_4"]
json.dump(dict(zip(f["timestamp"],totals),open("out.json","wb")))

最新更新