【发布时间】: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