2016-09-13 1 views
12

У меня есть dataframe, который может выглядеть следующим образом:Применить функцию к каждой ячейке в DataFrame

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 

Есть ли простой однострочный вкладыш, который может применять функцию к каждой ячейке?

Это упрощенный пример, поэтому может быть более простой способ выполнить этот конкретный пример, кроме применения функции, но то, о чем я действительно спрашиваю, - это как применить функцию в каждой ячейке в кадре данных.

+2

Я не думаю, что это хорошая идея, чтобы изменить вопросы к совершенно новым, когда вы уже получил ответы на старые, поскольку это лишает законных прав на предыдущие ответы. Я бы попросил вас отменить исходный вопрос и задать новый отдельно. –

ответ

20

Вы можете использовать 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 
+0

привет, извините, вопрос был о применении функции, а не о том, чтобы выяснить, какая ячейка четная. дайте мне посмотреть, могу ли я изменить пример, чтобы быть более четким. – eljusticiero67

+0

Если вы ищете применение функции, вы можете сделать импорт в качестве np; df.apply (np.vectorize (iseven)) ' – Psidom

+1

@ eljusticiero67 Вы можете использовать' df.applymap (iseven) ', но обратите внимание, что он станет очень медленным для больших DataFrames, поэтому всякий раз, когда у вас есть такая возможность, используйте векторизованные методы. – ayhan

 Смежные вопросы

  • Нет связанных вопросов^_^