パンダ:apply と lambda を一緒に使用する方法


次の基本構文を使用して、ラムダ関数をパンダ データフレームに適用できます。

 df[' col '] = df[' col ']. apply ( lambda x: ' value1 ' if x < 20 else ' value2 ')

次の例は、実際に次の pandas DataFrame でこの構文を使用する方法を示しています。

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'],
                   ' points ': [18, 22, 19, 14, 14, 11, 20, 28],
                   ' assists ': [5, 7, 7, 9, 12, 9, 9, 4]})

#view DataFrame
print (df)

  team points assists
0 to 18 5
1 B 22 7
2 C 19 7
3 D 14 9
4 E 14 12
5 F 11 9
6 G 20 9
7:28 a.m. 4

例 1:Apply と Lambda を使用して新しい列を作成する

次のコードは、 applylambda を使用して、値が既存の列の値に依存する新しい列を作成する方法を示しています。

 #create new column called 'status'
df[' status '] = df[' points ']. apply ( lambda x: ' Bad ' if x < 20 else ' Good ')

#view updated DataFrame
print (df)

  team points assists status
0 A 18 5 Bad
1 B 22 7 Good
2 C 19 7 Bad
3 D 14 9 Bad
4 E 14 12 Bad
5 F 11 9 Bad
6 G 20 9 Good
7:28 4 Good

この例では、次の値を取るstatusという新しい列を作成しました。

  • Bad ‘ ポイント列の値が 20 未満の場合。
  • ポイント列の値が 20 以上の場合は「良好」。

例 2:Apply と Lambda を使用して既存の列を変更する

次のコードは、 applylambda を使用して DataFrame 内の既存の列を変更する方法を示しています。

 #modify existing 'points' column
df[' points '] = df[' points ']. apply ( lambda x: x/2 if x < 20 else x*2)

#view updated DataFrame
print (df)

  team points assists
0 to 9.0 5
1 B 44.0 7
2 C 9.5 7
3D 7.0 9
4 E 7.0 12
5 F 5.5 9
6 G 40.0 9
7 A.M. 56.0 4

この例では、ラムダ関数で次のルールを使用して、既存のポイント列の値を変更します。

  • 値が 20 未満の場合は、値を 2 で割ります。
  • 値が 20 以上の場合は、値を 2 で乗算します。

このラムダ関数を使用して、既存のポイント列の値を変更することができました。

追加リソース

次のチュートリアルでは、パンダで他の一般的な機能を実行する方法を説明します。

Pandas Groupby に関数を適用する方法
Pandas の別の列の値を NaN に入力する方法

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です