Lambda関数について学ぶ
メニューを表示するにはスワイプしてください
定義
lambda 関数は、lambda キーワードで定義される小さく匿名の関数。def で定義される通常の関数とは異なり、lambda 関数には名前がなく、短く一度きりのロジックに使用される。
構文:
lambda arguments: expression
この関数は arguments を受け取り、expression の結果を返す。いくつかの簡単な例:
12345double = lambda x: x * 2 print(double(5)) # Returns 10 is_even = lambda x: x % 2 == 0 print(is_even(4)) # Returns True
lambda と iloc[] の併用
pandas では、iloc[] は通常、整数ベースの位置を受け取ります。しかし、lambda 関数も渡すことができます。この場合、x は DataFrame 自体を指し、x.index で行インデックスの値を取得します:
data.iloc[lambda x: x.index < 5]
これは最初の5行(インデックス 0 から 4)を返します。各部分の役割は以下の通りです:
lambda x:xを DataFrame とする無名関数の定義;x.index: 行インデックス値へのアクセス;x.index < 5: フィルタ条件;インデックスが5未満の行のみ選択。
結果は、iloc[] が行をフィルタするために使用するブール配列となります。
インデックスの偶奇によるフィルタリング
よくあるユースケースとして、データセットを偶数・奇数インデックスで分割する方法があります。剰余演算子 % は割り算の余りを返します:
123456789101112import pandas as pd # Data import data = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/4bf24830-59ba-4418-969b-aaf8117d522e/IMDb_Data_final.csv') # Rows with even indices (0, 2, 4, ...) even = data.iloc[lambda x: x.index % 2 == 0] print(even.head()) # Rows with odd indices (1, 3, 5, ...) odd = data.iloc[lambda x: x.index % 2 != 0] print(odd.head())
x.index % 2 == 0 は、インデックスが True で割り切れる(偶数)の場合に 2 となり、それ以外の場合は False となる。
すべて明確でしたか?
フィードバックありがとうございます!
セクション 1. 章 5
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください
セクション 1. 章 5