【问题标题】:How to convert csv with pandas to json如何将带有熊猫的csv转换为json
【发布时间】:2019-07-31 10:29:31
【问题描述】:

我需要将多个巨大的 csv 文件(每个 100k+ 行,100+ 行)转换为 JSON 以便进一步处理。 我想过将 csv 线程化并将其拆分为块以便更快地处理,但无法让 python 使用内置的 csv 库仅读取某些行。因此,我想到了 pandas.read_csv。 然而,现在我想不出一种将 pandas 数据帧很好地转换为 json 的高效方法,而不会因为实现循环而导致所有性能下降..

我已经有一个单线程串行解析文件。工作,只是超级慢,并且每天都会更新数据,因此每天都重做它只是没有乐趣......

header = next(f)
for row in f:
    data[row[0]] = dict()
    e = 0
    for element in row[1:]:
        e += 1
        if element != "":
            try:
                data[row[0]][header[e + 1]] = int(element)
            except ValueError:
                data[row[0]][header[e+1]] = element

结果应该保持不变,只是快了很多......

data = pd.read_csv(file_name, skiprows=self.chunk, nrows=self.steps)
data = data.to_dict(orient="records")

这将是我的开始,但直到现在除了慢循环之外什么都没有。数据现在是所有行的列表,每一行都包含一个字典,其中的键来自上面的行(不是标题),期望值作为值:

[{row_above_chunk[0] = row[0], row_above_chunk[1] = row[1], row_above_chunk[2] = row[2], ...}, {...}]

【问题讨论】:

    标签: json python-3.x pandas csv


    【解决方案1】:

    似乎有一个复合问题:

    • 读取大型数据文件
    • 将数据转储到 JSON 文件中

    你可以这样使用:

    with open('DataDump.json', 'w') as file:
    dfs = pd.read_csv('FilePATH.csv', chunksize=50000)
    for df in dfs:
        df.to_json(file)
    

    这使用chunksize 和df.to_json(),进一步使用documentation。

    您可以将chunksize 更改为适合您的内存容量的内容。

    【讨论】:

      猜你喜欢
      • 2017-06-04
      • 2019-12-20
      • 2021-03-22
      • 2023-03-18
      • 1970-01-01
      • 2021-04-27
      • 1970-01-01
      • 2021-07-20
      • 2021-08-21
      相关资源
      最近更新 更多