[PYTHON] 사전에 매핑 된 값이있는 새 팬더 열 추가
PYTHON사전에 매핑 된 값이있는 새 팬더 열 추가
나는 판다에서 정말 단순해야만하는 일을하려고 노력하고있다. 그러나 그것은 아무것도 아닌 것처럼 보인다. 기존의 팬더 데이터 프레임에 다른 (기존) 열을 기반으로하는 매핑 된 값인 열을 추가하려고합니다. 다음은 작은 테스트 케이스입니다.
import pandas as pd
equiv = {7001:1, 8001:2, 9001:3}
df = pd.DataFrame( {"A": [7001, 8001, 9001]} )
df["B"] = equiv(df["A"])
print(df)
나는 다음과 같은 결과를 기대했다.
A B
0 7001 1
1 8001 2
2 9001 3
대신 equiv가 호출 가능한 함수가 아니라는 오류가 발생합니다. 공정한 것, 그것은 사전입니다. 그러나 비록 그것을 함수로 싸지 만 나는 여전히 좌절감을 느낍니다. 그래서 나는 다른 연산과 작동하는지도 함수를 사용하려했지만 사전을 사용하여 패배했다.
df["B"] = df["A"].map(lambda x:equiv[x])
이 경우 나는 KeyError : 8001을 얻었습니다. 설명서와 이전 게시물을 읽었지만 사전과 판다 데이터 프레임을 혼합하는 방법을 제안하지는 않았습니다. 어떤 제안이라도 대단히 감사하겠습니다.
해결법
-
==============================
1.그것을하는 올바른 방법은 df [ "B"] = df [ "A"]. map (equiv)이 될 것입니다.
그것을하는 올바른 방법은 df [ "B"] = df [ "A"]. map (equiv)이 될 것입니다.
In [55]: import pandas as pd equiv = {7001:1, 8001:2, 9001:3} df = pd.DataFrame( {"A": [7001, 8001, 9001]} ) df["B"] = df["A"].map(equiv) print(df) A B 0 7001 1 1 8001 2 2 9001 3 [3 rows x 2 columns]
그리고 다음 예제를 고려할 때 키가 매우 잘 존재하지 않는 상황을 처리 할 것입니다.
In [56]: import pandas as pd equiv = {7001:1, 8001:2, 9001:3} df = pd.DataFrame( {"A": [7001, 8001, 9001, 10000]} ) df["B"] = df["A"].map(equiv) print(df) A B 0 7001 1 1 8001 2 2 9001 3 3 10000 NaN [4 rows x 2 columns]
from https://stackoverflow.com/questions/24216425/adding-a-new-pandas-column-with-mapped-value-from-a-dictionary by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] 파이썬에서 stdout에 C 공유 라이브러리가 인쇄되지 않게하려면 어떻게해야합니까? (0) | 2018.10.11 |
---|---|
[PYTHON] 파이썬을 통해 연결할 때 기본 Mysql 연결 시간 초과를 어떻게 바꿀 수 있습니까? (0) | 2018.10.11 |
[PYTHON] 파이썬에서 "global"문을 사용합니까? [닫은] (0) | 2018.10.11 |
[PYTHON] 주어진 파일을 포함하는 파일 시스템의 크기와 여유 공간을 찾습니다. (0) | 2018.10.11 |
[PYTHON] 파이썬과 numpy로 큰 데이터로 작업하는 것, 램이 충분하지 않은 것, 부분 결과를 디스크에 저장하는 방법? (0) | 2018.10.11 |