2017-10-16 1 views
0

나는 국가와 인구의 DICT이 팬더의 지정/적용 함수 내에서 일련의를받을 수 있나요 : 내 DF (sort_countries) 나는 열라는 나라가에서이유는

population_dict = {"Germany": 1111, .... } 

을 내가 추가 할 TypeError: 'Series' objects are mutable, thus they cannot be hashed : 위의 사전에서 인구라는 또 다른 열은 오류를 제공

population_df = sort_countries.assign(
    population=lambda x: population_dict[x["country"]], axis = 1) 
population_df.head() 

를 (인구 국가 일치).

x["country"]은 국가의 이름 만 반환해야한다고 생각할 때 시리즈입니까?

이 팬더는 항상 나를 혼란스럽게합니다. 내 람다에서는 x가 행이 될 것이라고 기대하고 그 행에서 국가를 선택합니다. 대신에 len (x [ "country"])은 192를 제공합니다 (내 국가 수, 시리즈 전체).

람다를 사용하고 별개의 기능이 아닌 다른 방법으로 어떻게 일치시킬 수 있습니까? 감사합니다.

답변

1

x["country"]은 단일 요소 임에도 불구하고 Series이지만 사전 인덱싱에는 사용할 수 없습니다. 연결된 값만 원하면 x["country"].item()을 사용하십시오.

그러나, 이런 종류의 일을 위해 만든 더 나은 접근 재단사 df.map을 사용하고 있습니다 :

population_df["population"] = population_df["country"].map(population_dict) 

map 자동 [ "국가"] population_df에서 가져온 키를 매핑하고 population_dict 자신의 적절한 값에 매핑됩니다.

+0

지도 하나가 완벽하게 작동합니다. 그러나 .item()은 그렇지 않습니다. 나는 x [ "country"]가 전체 칼럼을 가진 시리즈라고 생각한다. 이유를 이해하지 마십시오. 그 특정 행이 필요합니다 ... –