[PYTHON] 파이썬 판다 데이터 프레임 사전
PYTHON파이썬 판다 데이터 프레임 사전
필자는 두 개의 열 데이터 프레임을 가지고이를 파이썬 사전으로 변환하려고합니다. 첫 번째 열은 키이고 두 번째 열은 값이 될 것입니다. 미리 감사드립니다.
데이터 프레임 :
id value
0 0 10.2
1 1 5.7
2 2 7.4
해결법
-
==============================
1.to_dict에 대한 문서를 참조하십시오. 다음과 같이 사용할 수 있습니다.
to_dict에 대한 문서를 참조하십시오. 다음과 같이 사용할 수 있습니다.
df.set_index('id').to_dict()
그리고 하나의 열만있는 경우 열 이름을 피하기 위해 dict (실제로이 경우 Series.to_dict ())를 사용합니다.
df.set_index('id')['value'].to_dict()
-
==============================
2.
mydict = dict(zip(df.id, df.value))
-
==============================
3.중복을 보존하는 간단한 방법을 원할 경우 groupby를 사용할 수 있습니다.
중복을 보존하는 간단한 방법을 원할 경우 groupby를 사용할 수 있습니다.
>>> ptest = pd.DataFrame([['a',1],['a',2],['b',3]], columns=['id', 'value']) >>> ptest id value 0 a 1 1 a 2 2 b 3 >>> {k: g["value"].tolist() for k,g in ptest.groupby("id")} {'a': [1, 2], 'b': [3]}
-
==============================
4.이 스레드의 joris 및 중복 스레드의 punchagan의 대답은 매우 우아하지만 키에 사용 된 열에 중복 된 값이 포함되어 있으면 올바른 결과를 제공하지 않습니다.
이 스레드의 joris 및 중복 스레드의 punchagan의 대답은 매우 우아하지만 키에 사용 된 열에 중복 된 값이 포함되어 있으면 올바른 결과를 제공하지 않습니다.
예 :
>>> ptest = p.DataFrame([['a',1],['a',2],['b',3]], columns=['id', 'value']) >>> ptest id value 0 a 1 1 a 2 2 b 3 # note that in both cases the association a->1 is lost: >>> ptest.set_index('id')['value'].to_dict() {'a': 2, 'b': 3} >>> dict(zip(ptest.id, ptest.value)) {'a': 2, 'b': 3}
중복 된 항목이 있고 그것을 잃고 싶지 않은 경우이 못생긴하지만 작업 코드를 사용할 수 있습니다.
>>> mydict = {} >>> for x in range(len(ptest)): ... currentid = ptest.iloc[x,0] ... currentvalue = ptest.iloc[x,1] ... mydict.setdefault(currentid, []) ... mydict[currentid].append(currentvalue) >>> mydict {'a': [1, 2], 'b': [3]}
-
==============================
5.일부 버전에서는 아래 코드가 작동하지 않을 수 있습니다.
일부 버전에서는 아래 코드가 작동하지 않을 수 있습니다.
mydict = dict(zip(df.id, df.value))
그래서 그것을 명백하게해라.
id_=df.id.values value=df.value.values mydict=dict(zip(id_,value))
참고 단어 id는 예약어이므로 id_를 사용했습니다.
-
==============================
6.'독해력 이해'를 사용할 수 있습니다.
'독해력 이해'를 사용할 수 있습니다.
my_dict = {row[0]: row[1] for row in df.values}
-
==============================
7.중복 된 항목을 잃지 않기위한 또 다른 (약간 더 짧은) 솔루션 :
중복 된 항목을 잃지 않기위한 또 다른 (약간 더 짧은) 솔루션 :
>>> ptest = pd.DataFrame([['a',1],['a',2],['b',3]], columns=['id','value']) >>> ptest id value 0 a 1 1 a 2 2 b 3 >>> pdict = dict() >>> for i in ptest['id'].unique().tolist(): ... ptest_slice = ptest[ptest['id'] == i] ... pdict[i] = ptest_slice['value'].tolist() ... >>> pdict {'b': [3], 'a': [1, 2]}
-
==============================
8.사전 값으로 목록이 필요합니다. 이 코드는 트릭을 수행합니다.
사전 값으로 목록이 필요합니다. 이 코드는 트릭을 수행합니다.
from collections import defaultdict mydict = defaultdict(list) for k, v in zip(df.id.values,df.value.values): mydict[k].append(v)
from https://stackoverflow.com/questions/18695605/python-pandas-dataframe-to-dictionary by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] 파이썬은 git bash의 명령 행에서 작동하지 않습니다. (0) | 2018.10.03 |
---|---|
[PYTHON] C ++에서 호출 할 파이썬에서 C ++ 클래스를 구현하려면 어떻게해야합니까? (0) | 2018.10.03 |
[PYTHON] URL에서 최상위 도메인 이름 (TLD)을 추출하는 방법 (0) | 2018.10.03 |
[PYTHON] 파이썬 / 팬더가 저장된 csv에서 색인을 생성하는 것을 피하는 방법? (0) | 2018.10.03 |
[PYTHON] 파이썬 해시 가능 딕테이션 (0) | 2018.10.03 |