2013-06-10 2 views
0

JSON으로 변환해야하는 데이터 프레임이 있습니다. 우선 사전으로 바꾸는 것이 더 쉬울 것이라고 생각하지만, 어떻게해야 할지를 알 수 없습니다.범주 데이터의 데이터 프레임을 사전으로 변환하는 방법

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

내가 같이 할 데이터를 원하는 것입니다 : 내가 여기 js.d3

으로 시각화 할 수 있도록 내가 JSON으로 변환하는 데 필요한 데이터가 현재 모습입니다

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

(내 JSON은 여기서는 완벽하지 않지만 일반적인 아이디어를 전달하고 싶다고 생각합니다.)

+0

데이터가 현재 텍스트 파일에 있습니까? 귀하의 형식은 CSV-ish로 보이지만 아무 것도 가정하고 싶지는 않습니다. – bojangler

+0

파이썬 태그를 봅니다 ... 판다 데이터 프레임을 의미합니까? 그렇다면 [이 지점] (https://github.com/pydata/pandasjson)을 참조하십시오. –

+0

데이터는 현재 CSV 파일에 있습니다. –

답변

0
가장 안쪽 그룹 목록입니다, 그래서 당신은 한 번 이상 키로서 '키'를 사용할 수 없습니다

:

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') 

결과 : 브렌트 Washburne의에

{"Markets": {"Stores": ["Ex5"]}, "Education": {"Schools": ["Ex3"], "Books": ["Ex1", "Ex4"]}, "Transportation": {"Bus": ["Ex2"]}} 
+0

이것은 매우 도움이되었습니다. 감사!! 데이터를 약간 변경해야하므로 다른 사람들이 비슷한 문제를 겪을 경우 코드를 조금 변경하고 답변으로 게시했습니다. –

1

이 코드는 감사 위의 매우 유용한 답변. 지금은 태그 열을 제거해야했습니다. 왜냐하면 지금은 너무 복잡했기 때문입니다 (많은 행에는 쉼표로 구분 된 두 개 이상의 태그가있었습니다). 또한 이름에 연결된 원 (정수)을 추가했습니다. 여기에 있습니다 :

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') 
관련 문제