python pandas 데이터 프레임 열은 dict 키와 값으로 변환됩니다.


91

여러 열이있는 pandas 데이터 프레임이 있는데 하나는 dict의 키로, 다른 하나는 dict의 값으로 두 개의 열에서 dict를 구성하고 싶습니다. 어떻게 할 수 있습니까?

데이터 프레임 :

           area  count
co tp
DE Lake      10      7
Forest       20      5
FR Lake      30      2
Forest       40      3

영역을 키로 정의하고 dict의 값으로 계산해야합니다. 미리 감사드립니다.

답변:


212

경우 lakes당신이다 DataFrame, 당신은 뭔가를 할 수 있습니다

area_dict = dict(zip(lakes.area, lakes.count))

1
버전 0.17.1에서 오류 발생 :TypeError: zip argument #2 must support iteration
jezrael

19
솔루션 :area_dict = dict(zip(lakes['area'], lakes['count']))
jezrael 2015

1
이 질문에 다른 대답 stackoverflow.com/questions/18695605/...
벤 풀톤

1
둘 이상의 열이 사전 값에 포함되도록하려면 어떻게해야합니까? 나는 같은 것을 생각하고있다 area_dict = dict(zip(lakes.area, (lakes.count, lakes.other_column))). 어떻게 이런 일이 일어나게 하시겠습니까?
Jesse Marks

2
두 번째 인수에 여러 값이 있으면 작동하지 않습니다.
pnv

9

팬더를 사용하면 다음과 같이 할 수 있습니다.

Lakes가 DataFrame 인 경우 :

area_dict = lakes.to_dict('records')

1
주어진 예에는 '레코드'열이 없습니다. 또한 이러한 경우 인덱스는 우리가 원하는 것이 아닌 키가 될 것입니다.
Michael D

11
@MichaelD 'records'는 열이 아닙니다. 인수에 대한 옵션입니다 orient.
Zheng Liu

2

판다를 가지고 놀고 싶다면 이렇게 할 수도 있습니다. 그러나 나는 펀치 건의 방식을 좋아한다.

# replicating your dataframe
lake = pd.DataFrame({'co tp': ['DE Lake', 'Forest', 'FR Lake', 'Forest'], 
                 'area': [10, 20, 30, 40], 
                 'count': [7, 5, 2, 3]})
lake.set_index('co tp', inplace=True)

# to get key value using pandas
area_dict = lake.set_index('area').T.to_dict('records')[0]
print(area_dict)

output: {10: 7, 20: 5, 30: 2, 40: 3}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.