큰 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] 삭제
몇 마디 만하겠습니다