2016-11-14 1 views
1

팬더 데이터 프레임 열에서 문자열의 각 문자를 정수로 변환하고 (ord()에서와 같이) 왼쪽에 100을 더하고 싶습니다. 나는 일반 문자열로이 작업을 수행하는 방법을 알고팬더 문자열에서 정수로 문자열

st = "JOHNSMITH4817001141979" 
a=[ord(x) for x in st] 
b=[] 
for x in a: 
    b.append('{:03}'.format(x)) #Add leading zero, ensuring 3 digits 
b=['100']+b 
b=''.join([ "%s"%x for x in b]) 
b=int(b) 
b 

결과 : 100074079072078083077073084072052056049055048048049049052049057055057

하지만이 하나의 같은 팬더 데이터 프레임의 열 모든 세포에서이 작업을 수행하기를 원한다면 무엇?

import pandas as pd 
df = pd.DataFrame({'string':['JOHNSMITH4817001141979','JOHNSMYTHE4817001141979']}) 
df 

    string 
0 JOHNSMITH4817001141979 
1 JOHNSMYTHE4817001141979 

'string'의 각 셀에 대한 결과로 별도의 열이 필요합니다.

미리 감사드립니다.

답변

1

먼저 같은 함수로 처리 체인 변환 :

def get_it(a): 
    a=[ord(x) for x in st] 
    b=[] 
    for x in a: 
     b.append('{:03}'.format(x)) #Add leading zero, ensuring 3 digits 
    b=['100']+b 
    b=''.join([ "%s"%x for x in b]) 
    return int(b) 

및 다음 컬럼의 각 요소에 대해 반복적으로 호출이 목록을 새로운 컬럼을

df['result'] = [get_it(i) for i in df['string']] 

이 방법이 효과가 있긴하지만 나는 "get_it"프로세스를 최적화하여 더 나은 솔루션을 찾을 수 있다고 생각합니다.