У меня есть фрейм данных, который может выглядеть так:
A B C
foo bar foo bar
bar foo foo bar
Я хочу просмотреть каждый элемент каждой строки (или каждый элемент каждого столбца) и применить следующую функцию, чтобы получить последующий DF:
def foo_bar(x):
return x.replace('foo', 'wow')
A B C
wow bar wow bar
bar wow wow bar
Есть ли простой однострочник, который может применить функцию к каждой ячейке?
Это упрощенный пример, поэтому может быть более простой способ выполнить этот конкретный пример, кроме применения функции, но на самом деле я спрашиваю, как применить функцию в каждой ячейке внутри фрейма данных.
Ответы:
Вы можете использовать то,
applymap()
что является кратким для вашего случая.df.applymap(foo_bar) # A B C #0 wow bar wow bar #1 bar wow wow bar
Другой вариант - векторизовать вашу функцию, а затем использовать
apply
метод:import numpy as np df.apply(np.vectorize(foo_bar)) # A B C #0 wow bar wow bar #1 bar wow wow bar
источник
import numpy as np; df.apply(np.vectorize(iseven))
df.applymap(iseven)
но обратите внимание, что для больших DataFrames он станет очень медленным, поэтому всякий раз, когда у вас есть возможность, используйте векторизованные методы.