2016-10-30 6 views
1

저는 pandas.core.series.Series를 각 주 상위 3 개 카운티의 인구로 구성된 사전으로 변환했습니다. 나는 벗어날 수 없다. 사전의 형식은 취python list-within-dictionary 사전으로 변환

{('Alabama', 37): 660367.0, ('Alabama', 45): 353089.0, 
('Alabama', 49): 415395.0, ('Alaska', 71): 298695.0, 
('Alaska', 76): 99631.0, ('Alaska', 85): 101095.0, 
('Arizona', 106): 4167947.0, ('Arizona', 109): 1010025.0, 
('Arizona', 110): 406584.0, ('Arkansas', 118): 249672.0, 
('Arkansas', 174): 392664.0, ('Arkansas', 186): 225477.0, ... 

을 내가로 변환하려면 : 나는 코딩이 수정 정말 쉽게 뭔가 기대에 정말 새로운 해요 {('Alabama', 660367.0), ('Alabama', 353089.0), ... . 나는 첫번째 장소 (나는 단순히 data=dict(data)를 사용했다)에있는 추가 자료를 피하는 판다 시리즈를 개조하는 더 나은 방법이 있는지 알아낼 수 없다, 또는 어쩌면 사전을 통해서 for ... ...?

+1

data.head()를 붙여서 데이터 프레임의 콘텐츠를 공유하여 더 나은 옵션을 보여줄 수 있습니다. – Boud

답변

0

목록 이해력 (또는 비슷한)으로 출력 데이터를 쉽게 변환 할 수 있습니다. 데이터가 data에있는 경우,이 라인 중 하나는 당신이 실제로 무엇을 요구 할 것입니다 그리고 당신이 원하는 데이터 유형에 따라 다릅니다

out = [(key[0], value) for key, value in data.items()] 
out = tuple((key[0], value) for key, value in data.items()) 
out = set((key[0], value) for key, value in data.items()) 
# In Python 2.7+ this is the same as the above 
out = {(key[0], value) for key, value in data.items()} 

그러나 그들 중 어느 것도 원래는 달리 사전입니다. 하지만 사전에 각 값에 대해 고유 한 키가 필요하기 때문에 상태 이름은 고유하지 않기 때문입니다.

기본 아이디어는 각 항목을 반복하고 상태 이름 (키의 첫 번째 항목이므로 key[0])을 사용하고 인구를 추가합니다 (단지 value).

{('Alabama', 660367.0), ('Alabama', 353089.0), …은 실제로는 하나의 세트입니다 (적어도 파이썬 3에서 표현한 것입니다. 파이썬 2에서는 유효한 표기법이 아닙니다). 세트에는 순서가없고 모든 항목은 고유하므로 동일한 크기의 두 카운티를 하나의 항목과 동일한 상태로 저장합니다.

사전을 실제로 갖고 싶다면 키의 정의와 키의 값을 결정해야합니다.

0

당신이 DataFrame 개체에서 원하는이를 변환하는 더 나은 방법이 있습니다,하지만 신속하고 더러운 수정을 위해 ...

당신은 정말 이런 식으로 원하는 경우 {('Alabama', 660367.0), ('Alabama', 353089.0), ... }

당신이 할 수있는 이 (가정 python2.7는) :

(나는 우리가 사전 인 변수 d을 가정합니다.)

new_d = {(k[0], v) for k, v in d.iteritems()}

,536,913 63,210

print new_d =>

{('Alabama', 353089.0), ('Alabama', 415395.0), ('Alabama', 660367.0), ('Alaska', 298695.0)} ...이 실제로 세트이다

.

관련 문제