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

Python 如何将分类数据的dataframe转换为字典,python,json,dataframe,transformation,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 = { Educati

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

不能多次将“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"]}}

这段代码要感谢Brent Washburne在上面给出的非常有用的答案。我只需要删除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')

数据当前是否在文本文件中?您的格式看起来像CSV,但不想假设任何内容。我看到了Python标记。。。。你是说熊猫数据帧吗?如果是这样,请参阅。数据当前位于CSV文件中。是的,我将其作为熊猫数据框导入,我将查看链接,谢谢!这非常有帮助。谢谢我需要对数据做一些更改,所以我稍微更改了代码,并将其作为一个答案发布,以防其他人遇到类似问题。