如何将分类数据的数据帧转换为字典

2024-09-30 18:15:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个需要转换成JSON的数据帧。我想先把它译成词典会容易些,但我不知道怎么翻。我需要把它转换成JSON,这样我就可以用js.d3来可视化它

以下是当前数据的外观:

NAME, CATEGORY, TAG
Ex1, Education, Books
Ex2, Transportation, Bus
Ex3, Education, Schools
Ex4, Education, Books
Ex5, Markets, Stores

以下是我想要的数据:

^{pr2}$

(我觉得我的JSON在这里并不完美,但我只是想传达一下大致的想法)。在


Tags: 数据namejson可视化tagjsbooks词典
2条回答

不能多次将“key”用作键,因此最里面的组是一个列表:

import json, string

def to_json(file):
    data = {}
    for line in open(file):
        fields = map(string.strip, line.split(','))
        categories = data.get(fields[1], {})
        tags = categories.get(fields[2], [])
        tags.append(fields[0])
        categories[fields[2]] = tags
        data[fields[1]] = categories
    return json.dumps(data)

print to_json('data.csv')

结果:

^{pr2}$

这段代码要感谢布伦特·沃什伯恩在上面给出的非常有用的答案。我只需要删除tags列,因为现在它太乱了(许多行有多个标记用逗号分隔)。我还添加了一列(整数),我想把它连接到名称。这里是:

import json, string
import pprint

def to_json(file):
data = {}
for line in open(file):
    fields = map(string.strip, line.split(','))
    categories = data.get(fields[1], [])
    to_append = {}       
    to_append[fields[0]] = fields[3]
    categories.append(to_append)
    data[fields[1]] = categories
return json.dumps(data)

print to_json('data.csv')

相关问题 更多 >