Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Memisahkan Pandas DataFrame kepada Berbilang DataFrame Berdasarkan Nilai Unik Lajur?

Bagaimana untuk Memisahkan Pandas DataFrame kepada Berbilang DataFrame Berdasarkan Nilai Unik Lajur?

Susan Sarandon
Susan Sarandonasal
2024-12-12 15:29:11784semak imbas

How to Split a Pandas DataFrame into Multiple DataFrames Based on a Column's Unique Values?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn