ホームページ > バックエンド開発 > Python チュートリアル > Pandas GroupBy MultiIndex データフレームをフラット化する方法?

Pandas GroupBy MultiIndex データフレームをフラット化する方法?

Mary-Kate Olsen
リリース: 2024-12-02 00:01:09
オリジナル
323 人が閲覧しました

How to Flatten a Pandas GroupBy MultiIndex DataFrame?

Pandas GroupBy MultiIndex 出力を DataFrame に変換する

複数のインデックス列を持つ pandas DataFrame で groupby 操作を実行すると、結果はobject は階層インデックスを持つ DataFrame です。データに個別の行としてアクセスしたい場合、これは不便な場合があります。

簡単な例を次に示します:

df1 = pd.DataFrame({"City": ["Seattle", "Seattle", "Portland", "Seattle", "Seattle", "Portland"], "Name": ["Alice", "Bob", "Mallory", "Mallory", "Bob", "Mallory"]})

g1 = df1.groupby(["Name", "City"]).count()
ログイン後にコピー

g1 の出力は、階層インデックスを持つ DataFrame です:

                  City  Name
Name    City
Alice   Seattle      1     1
Bob     Seattle      2     2
Mallory Portland     2     2
        Seattle      1     1
ログイン後にコピー

これを個々の行を含む DataFrame に変換し直すには、add_suffix と replace_index のいずれかを使用できます。メソッド:

g1.add_suffix("_Count").reset_index()
ログイン後にコピー

これにより、インデックス列にサフィックスが追加され、インデックスがリセットされてフラットな DataFrame が作成されます:

      Name      City  City_Count  Name_Count
0    Alice   Seattle           1           1
1      Bob   Seattle           2           2
2  Mallory  Portland           2           2
3  Mallory   Seattle           1           1
ログイン後にコピー

または、size メソッドとreset_indexを使用して、各グループの行数を数え、新しい DataFrame を作成します:

DataFrame({'count': df1.groupby(["Name", "City"]).size()}).reset_index()
ログイン後にコピー

これにより、単一のインデックスを持つ DataFrame が作成されます列:

      Name      City  count
0    Alice   Seattle      1
1      Bob   Seattle      2
2  Mallory  Portland      2
3  Mallory   Seattle      1
ログイン後にコピー

どのアプローチを使用するかは、特定のニーズによって異なります。

以上がPandas GroupBy MultiIndex データフレームをフラット化する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート