python - 通过相同的键python将csv转换为json

标签 python json pandas csv dictionary

我有一个很大的 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/

相关文章:

python - 无法读取 Excel 文件,列表索引超出范围错误,无法找到表格

python - 为什么 Pocket API 总是返回 403 Forbidden?

php - PHP 中表(JSON 数据)中列的总和

java - 如何计算索引json android的值

python - 如何在 Django 中渲染缓存的 JSONP View

python - 更高效的时间增量计算 python 3

python - 如何不将 date_string 转换为 pandas 中的日期?

python - 使用 Python 控制 Windows 音量混合器

Python mock - 检查是否在模拟对象中调用了方法

python - 如何导入模块(如果之前导入过则重新加载)