Cara Mengisi Lajur Baharu dengan Output panda groupby().sum()
Apabila bekerja dengan data, ia boleh berguna untuk mencipta lajur baharu dalam DataFrame berdasarkan hasil pengiraan tertentu. Satu pengiraan sedemikian adalah menggunakan fungsi groupby() dan sum() dalam panda untuk mencari jumlah nilai bagi kumpulan tertentu dalam lajur. Walau bagaimanapun, apabila cuba mencipta lajur baharu dengan jumlah ini, ada kemungkinan untuk menemui nilai NaN.
Pertimbangkan kod berikut:
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] }) group = df['Data3'].groupby(df['Date']).sum() df['Data4'] = group
Apabila menjalankan kod ini, anda mungkin menjangkakan untuk melihat nilai yang dikira yang betul untuk setiap tarikh (seperti yang ditunjukkan dalam pembolehubah kumpulan), tetapi sebaliknya, anda mendapat nilai NaN dalam lajur Data4 yang baru dibuat.
Untuk menyelesaikan isu ini, anda perlu menggunakan fungsi transformasi. Fungsi ini mengembalikan Siri dengan indeks yang diselaraskan dengan DataFrame, membolehkan anda menambahkannya sebagai lajur baharu. Berikut ialah kod yang diperbetulkan:
df['Data4'] = df['Data3'].groupby(df['Date']).transform('sum')
Dengan pengubahsuaian ini, anda akan berjaya mencipta lajur Data4 baharu dengan nilai jumlah yang dikehendaki.
Atas ialah kandungan terperinci Bagaimana untuk Mengelakkan Nilai NaN Apabila Menambahkan hasil kumpulan panda mengikut().sum() pada Lajur Baharu?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!