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