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

2024-04-27 04:14:20 发布

您现在位置:Python中文网/ 问答频道 /正文

因此,根据一些反馈,我对代码进行了一些扩展,因为我实际上是在获取一个更大的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}...]

任何帮助如何做这一转变将不胜感激


Tags: csv代码jsonvaluedeftimestampinfileoutfile
2条回答
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")))

相关问题 更多 >