복붙노트

[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. ==============================

    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]
    
  2. from https://stackoverflow.com/questions/24216425/adding-a-new-pandas-column-with-mapped-value-from-a-dictionary by cc-by-sa and MIT license