>  기사  >  백엔드 개발  >  목록의 Pandas 열을 여러 행으로 어떻게 변환할 수 있나요?

목록의 Pandas 열을 여러 행으로 어떻게 변환할 수 있나요?

Susan Sarandon
Susan Sarandon원래의
2024-11-27 07:49:09976검색

How Can I Transform a Pandas Column of Lists into Multiple Rows?

Pandas 목록 열: 각 목록 요소에 대한 행 생성

Pandas 데이터 프레임에서는 목록이 포함된 열을 변환해야 할 수도 있습니다. 여러 행으로 나누어 목록의 각 요소가 자체 행을 차지합니다. 이를 달성하기 위해 실행 가능한 두 가지 옵션이 있습니다.

Pandas>=0.25의 내장 폭발 방법

Pandas 버전 0.25 이상의 경우 .explode( ) 이 목적을 위해 특별히 도입된 방법이 있습니다. 목록을 개별 행으로 효율적으로 변환합니다.

df = pd.DataFrame({'trial_num': [1, 2, 3, 1, 2, 3],
                    'subject': [1, 1, 1, 2, 2, 2],
                    'samples': [list(np.random.randn(3).round(2)) for i in range(6)]
                   })

df.explode('samples').reset_index(drop=True)  # Resetting the index for clarity

이 방법은 목록과 스칼라는 물론 빈 목록과 NaN이 포함된 혼합 열을 처리합니다. 그러나 폭발은 한 번에 하나의 열에서만 작동한다는 점에 유의하는 것이 중요합니다.

Pandas용 사용자 정의 함수 <0.25

Pandas 이전 버전의 경우 사용자 정의 함수를 활용할 수 있습니다.

def explode_list_column(df, column):
    # Create an empty list to store the expanded rows
    exploded_rows = []

    # Iterate through each cell in the specified column
    for row in df[column]:
        # Iterate through each element in the list
        for element in row:
            # Add a new row to the list, copying data from the current row and adding the new element
            exploded_rows.append(list(row) + [element])

    # Convert the expanded rows into a DataFrame
    return pd.DataFrame(exploded_rows, columns=df.columns + ['list_element'])

이 함수는 DataFrame과 목록이 포함된 열 이름을 매개변수로 사용합니다. 그리고 각 목록 요소에 대한 열이 포함된 새 DataFrame을 반환합니다.

# Applying the exploding function
exploded_df = explode_list_column(df, 'samples')

위 내용은 목록의 Pandas 열을 여러 행으로 어떻게 변환할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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