2016-05-15 7 views
0

Statusという名前のデータフレームspがあります。 Status列の値は'Done'または'Waiting'です。ラムダ関数を使用してStatus列の値を変更する必要があります。この場合、'Done'のステータスは'A'に変更され、'Waiting'のステータスは'N'に変更されます。これは私がそれを実行しようとしました方法です:パンダのラムダ関数のエラー

sp['Status'] = sp['Status'].apply(lambda x: x='A' if x=='Done' else x='N') 

私は、次のエラーメッセージが出ます:

sp['Status'] = sp['Status'].apply(lambda x: x='A' if x=='Done' else x='N') 
                    ^
SyntaxError: invalid syntax 

私が間違っているのか?

+0

あなたのエラーメッセージがあなたのコードと一致していません。回答者を混乱させないように**実際の**エラーを投稿してください。 –

答えて

1

ラムダの中で代入(ステートメント)を使うことはできません(式を取るだけです)。

ラムダだけではなく、返り新しい値必要があります。

sp['Status'] = sp['Status'].apply(lambda x: 'A' if x == 'Alive' else 'N') 

lambdaでの式の結果は常に戻り値です。あなただけの代わりに、ここでSeries.map()を使用

注:

sp['Status'] = sp['Status'].map({'Alive': 'A', 'Waiting': 'N'}) 
0

あなたが前にreturnがあったかのようにラムダ構文を読まなければなりません。そして、あなたはラムダ本体に割り当てを行うことはできません。

sp['Status'] = sp['Status'].apply(lambda x: 'A' if x=='Done' else 'N')