Menambah Lajur Kaunter Berjujukan pada Bingkai Data Berkumpulan Tanpa Panggilan Balik
Apabila cuba menambah lajur pembilang berjujukan kepada kumpulan dalam DataFrame, a fungsi panggil balik mungkin bukan pendekatan yang paling cekap. Pertimbangkan DataFrame berikut:
df = pd.DataFrame( columns="index c1 c2 v1".split(), data=[ [0, "A", "X", 3, ], [1, "A", "X", 5, ], [2, "A", "Y", 7, ], [3, "A", "Y", 1, ], [4, "B", "X", 3, ], [5, "B", "X", 1, ], [6, "B", "X", 3, ], [7, "B", "Y", 1, ], [8, "C", "X", 7, ], [9, "C", "Y", 4, ], [10, "C", "Y", 1, ], [11, "C", "Y", 6, ],]).set_index("index", drop=True)
Matlamatnya adalah untuk mencipta lajur "seq" baharu yang mengandungi nombor berjujukan untuk setiap kumpulan, menghasilkan output berikut:
c1 c2 v1 seq 0 A X 3 1 1 A X 5 2 2 A Y 7 1 3 A Y 1 2 4 B X 3 1 5 B X 1 2 6 B X 3 3 7 B Y 1 1 8 C X 7 1 9 C Y 4 1 10 C Y 1 2 11 C Y 6 3
Mengelakkan Fungsi Panggilan Balik:
Daripada menggunakan fungsi panggil balik, kami boleh memanfaatkan kaedah cumcount() untuk mencapai hasil yang sama dengan lebih cekap. cumcount() mengira bilangan kejadian setiap nilai unik dalam kumpulan dan mengembalikan Siri panda dengan kiraan terkumpul.
df["seq"] = df.groupby(['c1', 'c2']).cumcount() + 1
Pendekatan ini secara langsung mengubah suai DataFrame dan mengelakkan overhed fungsi panggil balik.
Menyesuaikan Nombor Permulaan:
Jika anda mahu penjujukan untuk bermula pada 1 dan bukannya 0, anda boleh menambah 1 pada hasil:
df["seq"] = df.groupby(['c1', 'c2']).cumcount() + 1
Dengan menggunakan kaedah cumcount(), kami memudahkan proses menambah lajur pembilang berjujukan pada bingkai data terkumpul, menambah baik kebolehbacaan dan prestasi.
Atas ialah kandungan terperinci Bagaimana untuk Menambah Lajur Kaunter Berjujukan dengan Cekap pada Bingkai Data Pandas Dikumpulkan Tanpa Menggunakan Fungsi Panggilan Balik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!