Saya memiliki kerangka data yang mungkin terlihat seperti ini:
A B C
foo bar foo bar
bar foo foo bar
Saya ingin melihat setiap elemen dari setiap baris (atau setiap elemen dari setiap kolom) dan menerapkan fungsi berikut untuk mendapatkan DF berikutnya:
def foo_bar(x):
return x.replace('foo', 'wow')
A B C
wow bar wow bar
bar wow wow bar
Apakah ada satu baris sederhana yang dapat menerapkan fungsi ke setiap sel?
Ini adalah contoh sederhana sehingga mungkin ada cara yang lebih mudah untuk mengeksekusi contoh spesifik ini selain menerapkan fungsi, tapi yang sebenarnya saya tanyakan adalah bagaimana menerapkan fungsi di setiap sel dalam dataframe.
Jawaban:
Anda dapat menggunakan
applymap()
yang ringkas untuk kasus Anda.df.applymap(foo_bar) # A B C #0 wow bar wow bar #1 bar wow wow bar
Pilihan lainnya adalah melakukan vektorisasi fungsi Anda dan kemudian menggunakan
apply
metode:import numpy as np df.apply(np.vectorize(foo_bar)) # A B C #0 wow bar wow bar #1 bar wow wow bar
sumber
import numpy as np; df.apply(np.vectorize(iseven))
df.applymap(iseven)
tetapi perhatikan bahwa ini akan menjadi sangat lambat untuk DataFrame yang lebih besar jadi kapan pun Anda memiliki kesempatan, gunakan metode vektorisasi.