Memisahkan Pandas DataFrame Berdasarkan Nilai Lajur Menggunakan Groupby
Artikel ini membentangkan penyelesaian kepada cabaran membahagikan DataFrame kepada beberapa bahagian berdasarkan pada nilai unik dalam lajur tertentu.
Pertimbangkan perkara berikut 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] })
Matlamatnya ialah untuk mencipta DataFrame baharu yang mempunyai berbilang lajur untuk lajur "N0_YLDF", dengan setiap lajur sepadan dengan nilai unik dalam lajur "ZZ". Untuk mencapai matlamat ini, kita boleh menggunakan fungsi groupby().
grouped_df = df.groupby("ZZ")
Fungsi groupby() mencipta objek pandas.core.groupby.groupby.DataFrameGroupBy, yang mewakili DataFrame dengan pembahagian kumpulan mengikut nilai dalam lajur yang ditentukan. Dalam kes ini, kami mempunyai empat kumpulan:
print(grouped_df.groups) # Output {2: [0], 6: [1, 2, 5, 6, 9], 5: [3, 4], 7: [7, 8]}
Untuk mendapatkan DataFrames individu bagi setiap kumpulan, kami boleh menggunakan pemahaman senarai:
split_dfs = [grouped_df.get_group(key) for key in grouped_df.groups]
Kaedah get_group() mengembalikan DataFrame yang mengandungi baris kepunyaan kumpulan yang ditentukan.
Senarai split_dfs yang terhasil mengandungi empat DataFrames, setiap satu mewakili nilai yang berbeza dalam lajur "ZZ".
Sebagai contoh, untuk mengakses DataFrame untuk kumpulan dengan nilai "ZZ" sebanyak 6, anda boleh menggunakan:
split_df_6 = split_dfs[1]
Ini akan memberi anda DataFrame dengan baris berikut:
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
Dengan menggunakan fungsi groupby() dan get_group() kaedah, anda boleh membahagikan DataFrame dengan berkesan kepada beberapa bahagian berdasarkan nilai dalam lajur yang ditentukan.
Atas ialah kandungan terperinci Bagaimana untuk Memisahkan Pandas DataFrame kepada Berbilang DataFrame Berdasarkan Nilai Unik Lajur?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!