확인 된 문자열 길이에 대한 특정 조건에 대해서만 다른 문자열 추출로 Pandas 새 열 : 빠른 방법

mik.ferrucci

큰 df (2 백만 행에 가까운)로 작업 중이며 다른 열에서 새 열을 만들어야합니다. 작업은 간단 해 보입니다. "PTCODICEFISCALE"이라는 시작 열에는 11 자 중 16 자, 다른 가능성 없음, NaN으로 구성된 문자열이 포함되어 있습니다. 내가 만들어야하는 새 열 ( "COGNOME")은 "PTCODICEFISCALE"n 번째 행의 길이가 16 인 경우에만 "PTCODICEFISCALE"의 첫 번째 문자 3 개를 포함해야합니다. 그렇지 않으면 길이가 11이면 새 열에 아무것도 포함되지 않아야합니다. 이는 "NaN"을 의미합니다.

나는 이것을 시도했다 :

csv.loc[len(csv['PTCODICEFISCALE']) == 16, 'COGNOME'] = csv.loc[csv.PTCODICEFISCALE.str[:3]]

출력에 다음 오류 메시지가 나타납니다.

ValueError: cannot index with vector containing NA / NaN values

이해가 안 돼요 "PTCODICEFISCALE"열에 NA / NaN이 없다고 확신합니다.

도움이 필요하세요? 감사!

추신 : "csv"는 DataFrame의 이름입니다.

이스 르엘

나는 당신이 필요 numpy.where하고 조건을 생각합니다 str.len:

csv['COGNOME'] = np.where(csv.PTCODICEFISCALE.str.len() == 16, csv.PTCODICEFISCALE.str[:3], np.nan)

견본:

csv = pd.DataFrame({'PTCODICEFISCALE':['0123456789123456','1','01234567891234']})
print (csv)
    PTCODICEFISCALE
0  0123456789123456
1                 1
2    01234567891234

csv['COGNOME'] = np.where(csv.PTCODICEFISCALE.str.len() == 16, csv.PTCODICEFISCALE.str[:3], np.nan)

print (csv)
    PTCODICEFISCALE COGNOME
0  0123456789123456     012
1                 1     NaN
2    01234567891234     NaN

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관