Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Saya Boleh Melaksanakan Berbilang Pengagregatan pada Lajur Yang Sama Menggunakan Pandas GroupBy.agg()?

Bagaimanakah Saya Boleh Melaksanakan Berbilang Pengagregatan pada Lajur Yang Sama Menggunakan Pandas GroupBy.agg()?

Patricia Arquette
Patricia Arquetteasal
2024-12-06 17:50:151053semak imbas

How Can I Perform Multiple Aggregations on the Same Column Using Pandas GroupBy.agg()?

Berbilang Pengagregatan pada Lajur yang Sama dengan Pandas GroupBy.agg()

Dalam panda, GroupBy.agg() membenarkan pengagregatan yang mudah bagi data dengan menggunakan fungsi pada setiap lajur. Walau bagaimanapun, adalah perlu untuk memanggil agg() beberapa kali apabila menggunakan fungsi yang berbeza pada lajur yang sama.

Pendekatan Tradisional (Salah):

Pendekatan intuitif mudah akan be:

df.groupby("dummy").agg({
    "returns": f1, 
    "returns": f2
})

Malangnya, ini mengakibatkan ralat disebabkan pendua kekunci.

Penyelesaian:

Memandangkan agg() menjangkakan kamus, penyelesaian yang mudah ialah mencipta kamus dengan nama lajur dan senarai fungsi:

df.groupby("dummy").agg({
    "returns": [f1, f2]
})

Ini akan menghasilkan DataFrame berbilang indeks dengan output kedua-dua pengagregatan.

Contoh:

Pertimbangkan DataFrame berikut:

import pandas as pd
import datetime as dt
import numpy as np

pd.np.random.seed(0)
df = pd.DataFrame({
    "date": [dt.date(2012, x, 1) for x in range(1, 11)],
    "returns": 0.05 * np.random.randn(10),
    "dummy": np.repeat(1, 10)
})

Untuk menggunakan kedua-dua min dan jumlah pada lajur "pulangan":

df.groupby("dummy").agg({
    "returns": ["mean", "sum"]
})

Ini akan menghasilkan:

           returns          
           mean       sum
dummy                    
1      0.036901  0.369012

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melaksanakan Berbilang Pengagregatan pada Lajur Yang Sama Menggunakan Pandas GroupBy.agg()?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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