Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimana untuk Menambah Lajur Kaunter Berjujukan dengan Cekap pada Bingkai Data Pandas Dikumpulkan Tanpa Menggunakan Fungsi Panggilan Balik?

Bagaimana untuk Menambah Lajur Kaunter Berjujukan dengan Cekap pada Bingkai Data Pandas Dikumpulkan Tanpa Menggunakan Fungsi Panggilan Balik?

Linda Hamilton
Lepaskan: 2025-01-01 02:12:16
asal
937 orang telah melayarinya

How to Efficiently Add a Sequential Counter Column to Grouped Pandas DataFrames Without Using a Callback Function?

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

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

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

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

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!

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