2016-05-15 64 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')