Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah `apply` dan `transform` berbeza apabila menolak dua lajur dan mengira min dalam Pandas DataFrame?
Tolak Dua Lajur dan Dapatkan Min dengan apply vs transform
Pertimbangkan rangka data berikut:
df = pd.DataFrame({'A': ['foo', 'bar', 'foo', 'bar', 'foo', 'bar', 'foo', 'foo'],</p> <pre class="brush:php;toolbar:false"> 'B': ['one', 'one', 'two', 'three', 'two', 'two', 'one', 'three'], 'C': np.random.randn(8), 'D': np.random.randn(8)}) A B C D
0 foo satu 0.162003 0.087469
1 bar satu -1.156319 -1.526272
2 foo dua 0.833892 -1.666304
3 bar tiga -2.026673 -0.322057
4 foo dua 0.411452 -0.954371
5 bar dua 0.765878 -0.095968
0.6
0.67 foo three -1.789842 -1.130922
apply vs. transform
Arahan berikut menggunakan fungsi lambda kumpulan dalam bingkai data:df.groupby('A').apply(lambda x: (x['C'] - x['D']))Ini mengembalikan bingkai data dengan bentuk yang sama seperti bingkai data asal, di mana setiap sel mengandungi hasil fungsi lambda yang digunakan pada kumpulan yang sepadan.Arahan berikut berubah setiap kumpulan dalam bingkai data:
df.groupby('A').transform(lambda x: (x['C'] - x['D']).mean())Ini mengembalikan siri dengan bentuk yang sama seperti kerangka data asal, di mana setiap sel mengandungi min perbezaan antara lajur C dan D untuk kumpulan yang sepadan.
Mengapa arahan yang berbeza berfungsi
Kaedah guna dan ubah mempunyai gelagat berbeza kerana ia berfungsi pada objek input yang berbeza.Mengembalikan nilai tunggal dengan transform
Adalah penting untuk ambil perhatian bahawa fungsi lambda yang diluluskan untuk mengubah mesti mengembalikan nilai tunggal untuk setiap kumpulan. Jika fungsi lambda mengembalikan DataFrame, Siri atau sebarang nilai bukan skalar yang lain, ralat akan dibangkitkan.Inilah sebabnya mengapa arahan berikut gagal:df.groupby('A').transform(lambda x: (x['C'] - x['D']))Lambda fungsi mengembalikan DataFrame, yang bukan satu nilai.
Kesimpulan
guna dan ubah ialah dua kaedah berkuasa yang boleh digunakan untuk melaksanakan operasi kumpulan mengikut kerangka data. Adalah penting untuk memahami perbezaan antara kedua-dua kaedah ini untuk menggunakannya dengan berkesan.Atas ialah kandungan terperinci Bagaimanakah `apply` dan `transform` berbeza apabila menolak dua lajur dan mengira min dalam Pandas DataFrame?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!