web-dev-qa-db-ja.com

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

各セルに機能を適用できるシンプルなワンライナーはありますか?

これは単純な例なので、関数を適用する以外にこの特定の例を実行する簡単な方法があるかもしれませんが、私が本当に求めているのは、データフレーム内のすべてのセルに関数を適用する方法です。

47
eljusticiero67

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
75
Psidom