我有一个数据框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')
我在哪里做错了?
答案 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)
您必须阅读lambda语法,就好像前面有return
一样。你不能在lambda体中进行任务:
sp['Status'] = sp['Status'].apply(lambda x: 'A' if x=='Done' else 'N')