Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana Cara Menambah Lajur Kaunter Berjujukan pada Data Dikumpulkan dalam Panda dengan Cekap?
Tambah Lajur Pembilang Berjujukan pada Kumpulan dalam Pandas DataFrame
Dalam konteks perbalahan data, terdapat tugas biasa untuk menambah pembilang berjujukan lajur kepada kumpulan dalam bingkai data panda. Satu pendekatan ialah menggunakan fungsi panggil balik seperti yang telah anda tunjukkan:
def callback(x): x['seq'] = range(1, x.shape[0] + 1) return x
Walaupun kaedah ini berfungsi, ia boleh menyusahkan dan melibatkan penentuan fungsi yang berasingan. Penyelesaian yang lebih ringkas dan elegan ialah menggunakan kaedah cumcount():
df.groupby(['c1', 'c2']).cumcount()
Kaedah ini mengira kiraan terkumpul untuk setiap kumpulan, dengan berkesan memberikan nombor turutan kepada setiap baris dalam kumpulan. Sebagai contoh, pertimbangkan bingkai data berikut:
index | c1 | c2 | v1 |
---|---|---|---|
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 |
Memohon cumcount() pada bingkai data ini, dikumpulkan mengikut c1 dan c2, akan menghasilkan:
index | 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 |
Untuk memulakan pesanan pada 1 sebaliknya daripada 0, cuma tambah 1 pada hasil cumcount():
df.groupby(['c1', 'c2']).cumcount() + 1
Atas ialah kandungan terperinci Bagaimana Cara Menambah Lajur Kaunter Berjujukan pada Data Dikumpulkan dalam Panda dengan Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!