Pandas에서는 적용된 사용자 정의 함수를 기반으로 여러 개의 새 열을 생성해야 하는 상황에 직면할 수 있습니다. 기존 열. 작업은 간단해 보일 수 있지만 예상되는 함수 반환 유형으로 인해 예상치 못한 문제가 발생할 수 있습니다.
처음에는 다음의 출력을 할당하려고 시도할 수 있습니다. df.ix[: ,10:16] = df.textcol.map(extract_text_features) 구문을 사용하여 DataFrame의 인덱스 범위에 직접 함수를 적용합니다. 그러나 이 접근 방식은 함수의 호환되지 않는 반환 유형으로 인해 종종 오류가 발생할 수 있습니다.
잠재적인 해결책 중 하나는 df.iterrows(를 사용하여 DataFrame의 각 행을 반복하는 것입니다. ). 이 방법을 사용하면 각 행에 개별적으로 함수를 적용하고 결과를 튜플로 캡처할 수 있습니다. 그러나 이 접근 방식은 다른 옵션보다 훨씬 느릴 수 있습니다.
더 효율적이고 유연한 접근 방식은 zip() 함수를 map()과 함께 사용하여 생성하는 것입니다. 새로운 열. zip() 함수는 함수의 출력을 튜플로 결합한 다음 개별 열로 압축을 풀 수 있습니다. 예를 들어 다음 코드는 zip() 메서드를 사용하여 6개의 새 열을 만드는 방법을 보여줍니다.
df['p1'], df['p2'], df['p3'], df['p4'], df['p5'], df['p6'] = zip(*df['num'].map(powers))
Pandas의 최근 업데이트에서는 열에 함수를 적용하고 새 열을 생성하는 보다 편리한 방법을 도입했습니다. 예를 들어, df.apply() 메서드를 사용하면 출력 형식(DataFrame, Series 또는 목록)을 지정하고 추가 매개변수를 처리할 수 있습니다. 또한 df.sign() 메서드를 사용하면 출력을 명시적으로 할당하지 않고도 직접 새 열을 생성할 수 있습니다. 이러한 새로운 방법은 함수를 기반으로 여러 개의 새 열을 생성할 때 더 많은 유연성과 효율성을 제공합니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3