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

时间:2013-06-10 23:08:13

标签: python json dataframe transformation

我有一个需要转换为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在这里并不完美,但我只是想传达一般的想法)。

2 个答案:

答案 0 :(得分: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')

答案 1 :(得分: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"]}}