以这个简单的数据集为例:
error:invalid syntax
以下行返回example_set["result"].apply(lambda x : example_set["value"]if x["dirr"]==1)
lambda
谁能告诉我我做错了什么?
如果没有chatHub.client.getOnlineUsers
,请不要提出如何做到这一点的解决方案:这只是我用来隔离问题的一个超级简化示例。
答案 0 :(得分:5)
您需要在lambda语句中包含else
返回值:
In [7]:
example_set['result'] = example_set.apply(lambda x: x['value'] if x['dirr'] == 1 else x['result'], axis = 1)
example_set
Out[7]:
dirr result value
0 1 125.0 125
1 0 NaN 130
2 -1 NaN 80
3 -1 NaN 8
4 1 150.0 150
5 -1 NaN 251
6 0 NaN 18
您的尝试:
example_set["result"].apply(lambda x : example_set["value"]if x["dirr"]==1)
本质上缺少else
返回值,你也需要x['value']
而不是整个df,使用整个df会产生一个奇怪且不受欢迎的返回结果,即使语句已被更正:
In [14]:
example_set.apply(lambda x: example_set['value'] if x['dirr'] == 1 else example_set['result'], axis = 1)
Out[14]:
0 1 2 3 4 5 6
0 125.0 130.0 80.0 8.0 150.0 251.0 18.0
1 NaN NaN NaN NaN NaN NaN NaN
2 NaN NaN NaN NaN NaN NaN NaN
3 NaN NaN NaN NaN NaN NaN NaN
4 125.0 130.0 80.0 8.0 150.0 251.0 18.0
5 NaN NaN NaN NaN NaN NaN NaN
6 NaN NaN NaN NaN NaN NaN NaN