😺
Python クラスのメソッドをデータフレームに適用する
はじめに
Pythonのクラスの中に書いた関数を、pandasのデータフレームにapplyで適用しようとして悩んだので、備忘的に記事にします。lambda関数でインスタンス化、続いてメソッドを呼び出せば良い、でした。
概要
こんな感じ。
df['result'] = df['source'].apply(lambda x: Myclass(x).mymethod())
内容
1. 例
作成したクラス(Myclass)の中のメソッド(関数)myaddを、pandasのデータフレームの列に適用したい。関数myaddは、xとyを入力すると、その和を返す。今回は、yは定数とする。
class Myclass:
def __init__(self, x, y):
self.x = x
self.y = y
def myadd(self):
add_a = self.x + self.y
return add_a
例えば、下記のデータフレーム df のa列に、全て2を加えたいような場合。
import pandas as pd
df=pd.DataFrame(data={'a':[1, 2, 3, 4], })
df
a | |
---|---|
1 | 1 |
2 | 2 |
3 | 3 |
4 | 4 |
df['a+2'] = df['a'].apply(lambda x: Myclass(x, y=2).myadd())
df
a | a+2 | |
---|---|---|
1 | 1 | 3 |
2 | 2 | 4 |
3 | 3 | 5 |
4 | 4 | 6 |
できた。
Discussion