Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用csv文件并在python中输出json_Python_Json_Csv_Pandas - Fatal编程技术网

使用csv文件并在python中输出json

使用csv文件并在python中输出json,python,json,csv,pandas,Python,Json,Csv,Pandas,我在python中使用pandas获取csv文件,对其进行一些小的转换,然后将这两列作为json文件输出。我想要两个值timestamp和value。我只想要两个新列,并删除文件的其余部分,使其看起来像: {“时间戳[0]”:值[0],“时间戳[1]”:值[1],“时间戳[2]”:值[2],…} 但是现在我的代码仍然会得到所有旧的csv数据,并且我想要的部分会被追加(并且是格式): {我不想要的东西,“时间戳”:“时间戳[0]”,“值”:值[0]},{…}{…} 以下是我目前使用的代码: imp

我在python中使用pandas获取csv文件,对其进行一些小的转换,然后将这两列作为json文件输出。我想要两个值
timestamp
value
。我只想要两个新列,并删除文件的其余部分,使其看起来像:

{“时间戳[0]”:值[0],“时间戳[1]”:值[1],“时间戳[2]”:值[2],…}

但是现在我的代码仍然会得到所有旧的csv数据,并且我想要的部分会被追加(并且是格式):
{我不想要的东西,“时间戳”:“时间戳[0]”,“值”:值[0]},{…}{…}

以下是我目前使用的代码:

import csv
import pandas as pd
import delorean as dl

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)

    f["timestamp"] = hmCols["timestamp"] #old code
    f["value"] = hmCols["value"] #old code
    f.to_json(outfile, orient="records") #old code

    pd.DataFrame(hmCols).to_json(outfile, orient="records") #From user Turn

doThings("test.csv", "heatmapData.json")
任何帮助都将不胜感激

因此,基于Turn的帮助,我根据他的建议更改了代码。现在我得到了输出:

[{“时间戳”:14179828063,“值”:1},{“时间戳”:14179828063,“值”:1},{“时间戳”:1417982808753,“值”:1},{“时间戳”:1417982811944,“值”:1}……

现在我需要将其转换为:


[{“14179828063”:1},{“14179828063”:1},{“1417982808753”:1},{“1417982811944”:1}…]

如果您更改此项:

        f["timestamp"] = hmCols["timestamp"]
        f["value"] = hmCols["value"]
        f.to_json(outfile, orient="records")
致:

编辑以添加:

我误解了您想要的输出。如果您将整个循环更改为此(在顶部添加了
import json
),该怎么办


我现在有了
[{“timestamp”:1417982808063,“value”:1},{“timestamp”:14179828063,“value”:1},{“timestamp”:1417982808753,“value”:1},{“timestamp”:1417982811944,“value”:1}
我误解了您所寻找的输出格式。答案已更新。
        pd.DataFrame(hmCols).to_json(outfile, orient="records")
    def doThings(infile, outfile):
        f = pd.read_csv(infile)
        result = []
        for i, row in f.iterrows():
            total = row["Playspace_1"] + row["Playspace_2"] + row["Playspace_3"] + row["Playspace_4"]
            result.append({row["Timestamp"]: total})

        with open(outfile, 'w') as fp:
            json.dump(result, fp)