0

我有一个需要转换为 JSON 的数据框。我认为首先将其变成字典会更容易,但我不知道如何。我需要将其转换为 JSON,以便我可以使用 js.d3 将其可视化

以下是当前数据的样子:

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

这是我希望数据的样子:

Data = {
     Education {
        Books {
           key: Ex1,
           key: Ex2 
}
Schools {
key: Ex3
}
}
Transportation {
Bus {
key: Ex2
}
}
Markets {
Stores {
key: Ex5
}
}

(我认为我的 JSON 在这里并不完美,但我只是想传达总体思路)。

4

2 回答 2

1

此代码感谢 Brent Washburne 在上面的非常有用的回答。我只需要删除标签列,因为现在它太乱了(许多行有多个用逗号分隔的标签)。我还添加了一列(整数),我希望将其连接到名称。这里是:

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')
于 2013-06-11T18:17:35.703 回答
0

您不能多次使用 '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')

结果:

{"Markets": {"Stores": ["Ex5"]}, "Education": {"Schools": ["Ex3"], "Books": ["Ex1", "Ex4"]}, "Transportation": {"Bus": ["Ex2"]}}
于 2013-06-10T23:59:42.803 回答