まるっとワーク

データ分析・電子工作など気になることを残していきます

Python: lambda式を使う

Pythonプログラムにおいて、複数回同じ作業を実施したいときは関数を定義して実行しますが、関数に名前を付けずに簡潔に宣言するlambda式を使った書き方をまとめます。

基本の書き方

lambda 引数: 処理内容
のように書く。

通常の関数を用いた書き方

import numpy as np
import pandas as pd

def calc(value, add):
    return value + add
 
print(calc(1,0.2))


lambda式を用いる場合

print((lambda value,add:value+add)(1,0.2))



listを対象としたlambda式での処理

lambda, mapメソッドを組み合わせる
mapメソッドの書き方: map(関数, リスト)

#データ
values = np.arange(100)

#lambda関数
print(list(map(lambda value:value+0.2, values)))


DataFrameを対象としたlambda式での処理

基本の使い方

lambda, applyメソッドを組み合わせる

#データ
df_values = pd.Series(np.arange(100))

#lambda関数
df_calc_value = df_values.apply(lambda x: x*2)
print(df_calc_value)

※2次元配列では、applyメソッドではなくapplymapメソッドを使用する

出力結果は以下の通り

0       0
1       2
2       4
3       6
4       8
     ... 
95    190
96    192
97    194
98    196
99    198
Length: 100, dtype: int64


if文処理含めたもの

同じくlambda, applyメソッドを組み合わせて使用する
lambda 引数 "Trueの処理" if 条件式 else "Falseの処理"

#データ
df_values = pd.Series(np.arange(100))

#lambda関数
df_calc_value = df_values.apply(lambda x: 100 if x > 10 else 0)
print(df_calc_value)


出力結果は以下の通り

0       0
1       0
2       0
3       0
4       0
     ... 
95    100
96    100
97    100
98    100
99    100
Length: 100, dtype: int64


まとめ

今回は無名関数と呼ばれるlambda式の書き方についてまとめました。
すべてを関数として書くと、コードが長くなってしまい、可読性が下がる場合があるので、意識して使いこなしていきたいですね