ホームページ >バックエンド開発 >Python チュートリアル >Pandas のリストの列を複数の列に効率的に分割するにはどうすればよいですか?

Pandas のリストの列を複数の列に効率的に分割するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-17 13:02:26724ブラウズ

How to Efficiently Split a Pandas Column of Lists into Multiple Columns?

リストの Pandas 列を複数の列に分割する

データ探索では、多くの場合、DataFrame 列をより管理しやすい形式に再構築する必要があります。このようなシナリオの 1 つは、リストを含む列を複数の列に分割することです。

チーム名のリストを保持する、「teams」という名前の 1 つの列を持つ DataFrame を考えてみましょう。

import pandas as pd

df = pd.DataFrame({
    "teams": [[
        "SF", 
        "NYG"
    ] for _ in range(7)]
})

これを分割するには「teams」列を「team1」と「team2」の 2 つの列に分割すると、to_list によって作成されたリストを使用して DataFrame コンストラクターを活用できます。

オプション 1: 既存の DataFrame の変更

to_list メソッドを使用すると、「チーム」リストをリストのリストに変換できます。新しい「team1」列と「team2」列を作成します:

df[['team1', 'team2']] = pd.DataFrame(df['teams'].tolist(), index=df.index)

この操作元の DataFrame を新しい列で変更します:

       teams team1 team2
0  [SF, NYG]    SF   NYG
1  [SF, NYG]    SF   NYG
2  [SF, NYG]    SF   NYG
3  [SF, NYG]    SF   NYG
4  [SF, NYG]    SF   NYG
5  [SF, NYG]    SF   NYG
6  [SF, NYG]    SF   NYG

オプション 2: 新しい DataFrame の作成

または、必要に応じて、列の分割:

df3 = pd.DataFrame(
    df['teams'].tolist(), 
    columns=['team1', 'team2']
)

この操作により、別の列が作成されます。 DataFrame:

  team1 team2
0    SF   NYG
1    SF   NYG
2    SF   NYG
3    SF   NYG
4    SF   NYG
5    SF   NYG
6    SF   NYG

この分割を実現するために apply(pd.Series) 関数を適用すると大幅に時間がかかるため、大規模なデータセットには推奨されないことに注意してください。

以上がPandas のリストの列を複数の列に効率的に分割するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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