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
Lepaskan: 2024-12-12 15:29:11
asal
784 orang telah melayarinya

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]
})
Salin selepas log masuk

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")
Salin selepas log masuk

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]}
Salin selepas log masuk

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]
Salin selepas log masuk

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]
Salin selepas log masuk

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
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan