lambdaの使い方を教えてください。


下記では上手く実行されるのに

[code]

    df['flag'] = df['current'].apply(lambda x : 1 if x >= 5000 else 0 )
    
[/code]

下記に変更するとエラーがでます。

[code]

    df['flag'] = df['current'].apply(lambda x : 1 if x >= df['current2'] else 0 )
    
[/code]

エラーメッセージ

[code]

    ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
    
[/code]




複数の列で`apply`を使用したい場合は、SeriesではなくてDataFrameに対して適用する必要があります。

[code]

    df['flag'] = df.apply(lambda x: 1 if x.current >= x.current2 else 0, axis=1)
    
[/code]

でも、質問のような計算では、Pandasのベクトル演算を使いましょう。

[code]

    df['flag'] = (df['current'] >= df['current2']).astype(int)
    
[/code]

