Apabila melakukan pengiraan pada lajur dalam Pandas DataFrame menggunakan groupby() fungsi, selalunya perlu untuk memasukkan hasil kembali ke dalam DataFrame. Satu cara untuk mencapai matlamat ini ialah dengan membuat lajur baharu berdasarkan pengiraan terkumpul.
Dalam contoh yang disediakan, matlamatnya ialah untuk mencipta lajur baharu, Data4, yang mengandungi jumlah lajur Data3 untuk setiap Tarikh .
Kod yang dibentangkan cuba untuk menetapkan hasil terkumpul terus ke lajur baharu, tetapi ia menghasilkan nilai NaN. Untuk menyelesaikan isu ini, kaedah transform() hendaklah digunakan sebaliknya:
df['Data4'] = df['Data3'].groupby(df['Date']).transform('sum')
Kaedah transform() mengembalikan Siri yang sejajar dengan indeks DataFrame, membenarkannya ditambahkan secara langsung sebagai lajur baharu . Parameter 'sum' menentukan pengiraan yang ingin kami lakukan.
Kod yang dikemas kini di bawah menunjukkan penggunaan transform():
import pandas as pd df = pd.DataFrame({ 'Date': ['2015-05-08', '2015-05-07', '2015-05-06', '2015-05-05', '2015-05-08', '2015-05-07', '2015-05-06', '2015-05-05'], 'Sym': ['aapl', 'aapl', 'aapl', 'aapl', 'aaww', 'aaww', 'aaww', 'aaww'], 'Data2': [11, 8, 10, 15, 110, 60, 100, 40], 'Data3': [5, 8, 6, 1, 50, 100, 60, 120] }) df['Data4'] = df['Data3'].groupby(df['Date']).transform('sum') print(df)
Output kod yang diubah suai mengira dengan betul jumlah Data3 untuk setiap Tarikh dan menambah hasil pada DataFrame sebagai lajur baharu Data4:
Date Sym Data2 Data3 Data4 0 2015-05-08 aapl 11 5 55 1 2015-05-07 aapl 8 8 108 2 2015-05-06 aapl 10 6 66 3 2015-05-05 aapl 15 1 121 4 2015-05-08 aaww 110 50 55 5 2015-05-07 aaww 60 100 108 6 2015-05-06 aaww 100 60 66 7 2015-05-05 aaww 40 120 121
Atas ialah kandungan terperinci Bagaimana untuk Menambah Lajur Baharu dengan Betul pada Pandas DataFrame Selepas Operasi groupby().sum()?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!