ホームページ  >  記事  >  バックエンド開発  >  リストの 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 データフレームでは、リストを含む列を変換する必要がある場合があります。複数の行に分割され、リストの各要素が独自の行を占めます。これを実現するには、2 つの実行可能なオプションがあります。

Pandas>=0.25 の組み込みの Explode メソッド

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 を含む混合列を処理します。ただし、Explore は一度に 1 つの列に対して動作することに注意することが重要です。

Pandas のカスタム関数

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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。