Masalah:
Anda mempunyai bingkai data yang besar dengan lebih 1 juta rekod mewakili data daripada eksperimen dengan 60 peserta. Setiap peserta mempunyai kod unik yang disimpan dalam pembolehubah 'nama' bingkai data. Anda berhasrat untuk membahagikan bingkai data kepada 60 bingkai data yang lebih kecil, satu untuk setiap peserta.
Percubaan Asal:
Pendekatan awal anda untuk mencapai ini melalui fungsi tersuai yang dipanggil splitframe tidak 't menghasilkan keputusan dalam masa sejam pelaksanaan. Fungsi ini bertujuan untuk menggelungkan melalui bingkai data, menambahkan baris secara berulang pada bingkai data yang lebih kecil dan menambahkannya pada senarai sehingga peserta baharu dikenal pasti, pada ketika itu ia akan mencipta bingkai data baharu untuk peserta seterusnya.
Penyelesaian menggunakan Penghirisan Bingkai Data:
Daripada memisahkan bingkai data secara berulang, anda boleh menggunakan pendekatan yang lebih cekap menggunakan penghirisan bingkai data. Begini cara anda boleh melakukannya:
import pandas as pd # Create a list of unique participant names unique_names = data['name'].unique() # Initialize a dictionary to store the split dataframes data_dict = {} # Iterate over the unique names for name in unique_names: # Create a new dataframe by slicing the original dataframe data_dict[name] = data[data['name'] == name]
Keputusan:
Kod ini akan mencipta kamus yang dipanggil data_dict. Setiap kunci dalam kamus mewakili nama peserta, dan nilai yang sepadan ialah bingkai data panda yang mengandungi semua data untuk peserta tertentu itu. Anda boleh mengakses bingkai data setiap peserta dengan menggunakan sintaks berikut:
participant_data = data_dict['ParticipantName']
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Membahagikan DataFrame Panda Besar dengan Cekap kepada DataFrame yang Lebih Kecil Berdasarkan ID Peserta?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!