2016-07-04 2 views
0

저는 파이썬에 대해 아주 신이니까요.dict을 사용하여 팬더 데이터 프레임 열을 다시 매핑

1에서 66까지의 값을 포함하는 데이터 프레임 dff에 'age'라는 열이 있습니다. 각 값은 사전 di의 키에 해당하며 다음 값을 대체하려고합니다. 사전으로부터의 대응하는 값을 가지는 열

나는 예를 들어, 하나의 값이 작업을 수행 할 수 있습니다

dff['age'] = dff['age'].replace('1', di.get('1')) 

그러나 나는 모든 (66 개) 값을하고 싶어. 나는 이것을 시도했다 :

i = 1 
while i <= 66: 
    i = str(i) 
    dff['age'] = dff['age'].replace(i, di.get(i)) 
    i = int(i) 
    i = i + 1 

어떤 열에있는 값을 전혀 변경하지 않는 것 같습니다. 어떤 아이디어? 감사합니다. .

+2

죄송합니다. dff [ 'age'] = dff [ 'age']. 또한 for 루프에 대한 문제는 각 반복에서 전체 열을 덮어 쓰므로 마지막 반복이 지속됩니다. – EdChum

+0

빠른 응답, @EdChum에 감사드립니다. Map을 시도했지만 모든 값에 대해 NaN 만 반환하는 것으로 보입니다. – Todd

+1

"각 값이 사전의 키에 해당하면 di"가 제대로 작동해야합니다. NaN을 반환하면 키 유형을 확인하십시오. – ayhan

답변

0

저는 .replace()이 더 잘할 것이라고 생각합니다. .map()은 특정 일치 항목이없는 경우 nans을 채 웁니다. 진정한되는 .map()nan을 소개

dff = pd.DataFrame(['a', 'b', 'c', 'd', 'a'], columns=['age']) 

df['age'].replace({'a': '10-25', 'b': '50-60'}) 
0 10-25 
1 50-60 
2  c 
3  d 
4 10-25 
Name: age, dtype: object 

예를 들면 목표 출력

dff['age'] = dff['age'].replace(di) 

이다 의존한다.

dff['age'].map({'a': '10-25', 'b': '50-60'}) 
0 10-25 
1 50-60 
2  NaN 
3  NaN 
4 10-25 
Name: age, dtype: object 
관련 문제