我有一个很大的 csv 文件(大约 1GB),我想通过以下方式将其转换为 json 文件:
csv 文件具有以下结构:
header :tid;inkey;outkey;value
值(value)观:
tid1;inkey1;outkey1;value1
tid1;inkey2;outkey2;value2
tid2;inkey2;outkey3;value2
tid2;inkey4;outkey3;value2
等等
想法是将此 csv 转换为具有以下结构的 json,基本上按“tid”对所有内容进行分组:
{
"tid1": {
"inkeys":["inkey1", "inkey2"],
"outkeys":["outkey1", "outkey2"]
}
}
我可以想象如何用普通的 python 字典和列表来处理,但我的问题也是我必须处理的大量数据。我想 pandas 可以在这里提供帮助,但我对这个工具仍然很困惑。
最佳答案
我认为这对于标准 Python 数据结构(如 defaultdict
)应该是直截了当的。除非你的内存非常有限,否则我看不出为什么使用直接的方法 1gb 的文件会有问题。
类似(未测试):
from collections import defaultdict
import csv
import json
out_data = defaultdict(lambda: {"inkeys": [], "outkeys": [], "values": []})
with file("your-file.csv") as f:
reader = csv.reader(f):
for line in reader:
tid, inkey, outkey, value = line
out_data[tid]["inkeys"].append(inkey)
out_data[tid]["outkeys"].append(outkey)
out_data[tid]["values"].append(value)
print(json.dumps(out_data))
使用 Pandas 或其他工具可能有更快或更高效的内存方式,但简单性和零依赖性大有帮助。
关于python - 通过相同的键python将csv转换为json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51208672/