😺

Python クラスのメソッドをデータフレームに適用する

2023/08/16に公開

はじめに

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