2016-05-15 63 views
0

我有一個數據幀sp,其列名爲StatusStatus列中的值爲'Done''Waiting'。我需要使用lambda函數更改Status列的值,其中狀態'Done'更改爲'A',狀態'Waiting'更改爲'N'。這是我想做到這一點:熊貓中的lambda函數出錯

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

你的錯誤消息不匹配你的代碼。請發佈** actual **錯誤以免混淆回覆者。 –

回答

1

你不能在lambda表達式中使用賦值(一個語句)。

拉姆達應改爲只回報新值:

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

你必須閱讀l​​ambda語法好像有在前面return。而且你不能在lambda體內進行分配:

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