【问题标题】:Working with a csv file and outputting json in python使用 csv 文件并在 python 中输出 json
【发布时间】:2016-03-15 13:05:32
【问题描述】:

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

{"timestamp[0]":value[0],"timestamp[1]":value[1],"timestamp[2]":value[2],..}

但是现在使用我的代码,我仍然可以获得所有旧的 csv 数据,并且我想要的部分被附加(并且以格式): {stuff I don't want, "timestamp":"timestamp[0]", "value":value[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 的帮助,我按照他的建议更改了代码。现在我得到了输出:

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

现在我需要将其转换为:

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

【问题讨论】:

    标签: python json csv pandas


    【解决方案1】:

    如果你改变这个会怎样:

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

    到:

            pd.DataFrame(hmCols).to_json(outfile, orient="records")
    

    编辑添加:

    我误解了您要查找的输出。如果您将整个循环更改为此(在顶部添加import json)会怎样:

        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)
    

    【讨论】:

    • 这让我非常接近!我现在有[{"timestamp":1417982808063,"value":1},{"timestamp":1417982808063,"value":1},{"timestamp":1417982808753,"value":1},{"timestamp":1417982811944,"value":1}
    • 我误解了您要查找的输出格式。答案已更新。
    猜你喜欢
    • 2021-12-21
    • 2015-11-15
    • 2020-04-04
    • 2020-01-25
    • 2022-01-24
    • 1970-01-01
    • 2019-01-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多