Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimana Cara Menambah Lajur Kaunter Berjujukan pada Data Dikumpulkan dalam Panda dengan Cekap?

Bagaimana Cara Menambah Lajur Kaunter Berjujukan pada Data Dikumpulkan dalam Panda dengan Cekap?

Linda Hamilton
Lepaskan: 2024-12-24 14:04:15
asal
919 orang telah melayarinya

How to Efficiently Add a Sequential Counter Column to Grouped Data in Pandas?

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

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

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

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!

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