如何将带有熊猫的csv转换为json

时间:2019-07-31 10:29:31

标签: json python-3.x pandas csv

我需要将多个巨大的csv文件(每个100k +行,100+行)转换为JSON,以进行进一步处理。 我想到了将csv线程化和拆分为块以便更快地处理,但是无法通过内置的csv库使python只读取某些行。因此,我想到了pandas.read_csv。 但是,现在我想不出一种将熊猫数据帧很好地转换为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], ...}, {...}]

1 个答案:

答案 0 :(得分:0)

似乎有一个复合问题:

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

您可以使用以下内容:

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

这使用了chunksizedf.to_json(),还有documentation

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