>백엔드 개발 >파이썬 튜토리얼 >Pandas 데이터 프레임에서 중첩 목록을 개별 행으로 전개하는 방법은 무엇입니까?

Pandas 데이터 프레임에서 중첩 목록을 개별 행으로 전개하는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-12 03:10:02544검색

How to Explode Nested Lists into Individual Rows in a Pandas Dataframe?

Pandas 데이터 프레임에서 중첩 목록을 개별 행으로 폭발

Pandas를 사용한 데이터 조작 영역에서는 데이터를 재구성해야 할 필요성이 자주 발생합니다. 중첩된 목록으로 개별 행에 저장됩니다. "nearest_neighbors" 열에 값 목록이 포함된 데이터프레임을 생각해 보세요. 목표는 이러한 목록을 "폭발"하여 목록 내의 각 값에 대해 별도의 행을 생성하는 것입니다.

Pandas 0.25는exploding() 메서드를 사용하여 목록 폭발을 단순화합니다

pandas의 경우 버전 0.25 이상에서는 Explore() 메서드가 도입되면서 열의 목록 확장이 크게 단순화되었습니다. 기능을 시연하기 위해 예제 데이터 프레임을 다시 만들어 보겠습니다.

import pandas as pd

# Original DataFrame
df = pd.DataFrame({'name': ['A.J. Price'] * 3, 
                    'opponent': ['76ers', 'blazers', 'bobcats'], 
                    'nearest_neighbors': [['Zach LaVine', 'Jeremy Lin', 'Nate Robinson', 'Isaia']] * 3})

# Set the index for easier reference
df = df.set_index(['name', 'opponent'])

중첩 목록 폭발

explode() 메서드를 사용하여 "nearest_neighbors"를 분할할 수 있습니다. 열을 목록 요소별로 정렬하여 각 값에 대해 별도의 행을 생성합니다.

# Explode the list-like column
df_exploded = df.explode('nearest_neighbors')

분해 후 출력

print(df_exploded)
                    nearest_neighbors
name       opponent                  
A.J. Price 76ers          Zach LaVine
           76ers           Jeremy Lin
           76ers        Nate Robinson
           76ers                Isaia
           blazers        Zach LaVine
           blazers         Jeremy Lin
           blazers      Nate Robinson
           blazers              Isaia
           bobcats        Zach LaVine
           bobcats         Jeremy Lin
           bobcats      Nate Robinson
           bobcats              Isaia

보시다시피 각 값은 "nearest_neighbors" 열에 있는 목록의 항목은 이제 해당 상대 인덱스 내에서 별도의 행으로 표시됩니다.

목록 확장을 위한 기타 방법

이전 Pandas 버전의 경우 0.25에는 열의 목록을 확장하는 다른 접근 방식이 있었습니다. 이러한 방법에는 적용, 람다 및 목록 이해와 같은 작업의 조합이 필요했습니다. 그러나Explode() 메서드가 도입되면서 이러한 복잡한 접근 방식은 더 이상 필요하지 않습니다.

위 내용은 Pandas 데이터 프레임에서 중첩 목록을 개별 행으로 전개하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.