Groupby を使用した列値に基づいた Pandas DataFrame の分割
この記事では、DataFrame を複数の部分に分割するという課題に対する解決策を示します。特定の列内の固有の値を対象とします。
次の点を考慮してください。 DataFrame:
import pandas as pd df = pd.DataFrame({ "N0_YLDF": [6.286333, 6.317000, 6.324889, 6.320667, 6.325556, 6.359000, 6.359000, 6.361111, 6.360778, 6.361111], "ZZ": [2, 6, 6, 5, 5, 6, 6, 7, 7, 6], "MAT": [11.669069, 11.669069, 11.516454, 11.516454, 11.516454, 11.516454, 11.516454, 11.516454, 11.516454, 11.516454] })
目標は、「N0_YLDF」列に複数の列があり、各列が「ZZ」列の一意の値に対応する新しい DataFrame を作成することです。これを実現するには、groupby() 関数を利用します。
grouped_df = df.groupby("ZZ")
groupby() 関数は、次に従ってグループが分割された DataFrame を表す pandas.core.groupby.groupby.DataFrameGroupBy オブジェクトを作成します。指定された列の値。この場合、4 つのグループがあります:
print(grouped_df.groups) # Output {2: [0], 6: [1, 2, 5, 6, 9], 5: [3, 4], 7: [7, 8]}
各グループの個別の DataFrame を取得するには、リスト内包表記を使用できます:
split_dfs = [grouped_df.get_group(key) for key in grouped_df.groups]
get_group() メソッドは DataFrame を返します。これには、指定されたグループに属する行が含まれます。
結果の split_dfs リストには、それぞれ異なるデータフレームを表す 4 つの DataFrame が含まれます。 「ZZ」列の値。
たとえば、「ZZ」値が 6 のグループの DataFrame にアクセスするには、次のように使用できます。
split_df_6 = split_dfs[1]
これにより、次の行を含む DataFrame:
N0_YLDF ZZ MAT 1 6.317000 6 11.669069 2 6.324889 6 11.516454 5 6.359000 6 11.516454 6 6.359000 6 11.516454 9 6.361111 6 11.516454
groupby() 関数と get_group() メソッドを利用すると、DataFrame を効果的に分割できます。指定された列の値に基づく複数の部分。
以上が列の一意の値に基づいて Pandas DataFrame を複数の DataFrame に分割する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。