1. ホーム
  2. python

[解決済み] DataFrameの各セルに関数を適用する

2022-09-04 02:40:12

質問

次のようなデータフレームがあります。

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