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> <div class="code" style="position:relative; padding:0px; margin:0px;"><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']))
df.groupby('A').transform(lambda x: (x['C'] - x['D']).mean())
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']))
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!