pandas中lambda函数出错

时间:2016-05-15 12:21:38

标签: python pandas lambda

我有一个数据框sp,其中包含一个名为Status的列。 Status列中的值为'Done''Waiting'。我需要使用lambda函数更改Status列的值,其中状态'Done'更改为'A',状态'Waiting'更改为{{ 1}}。这就是我尝试这样做的方式:

'N'

然后我收到以下错误消息:

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

我在哪里做错了?

2 个答案:

答案 0 :(得分:1)

你不能在lambda中使用赋值(语句)(只接受表达式)。

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'})

答案 1 :(得分:0)

您必须阅读l​​ambda语法,就好像前面有return一样。你不能在lambda体中进行任务:

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