jim*_*iat 1 python lambda pandas
我们以这个简单的数据集为例:
example_set = pd.DataFrame(data = {"dirr":[1,0,-1,-1,1,-1,0],
"value": [125,130,80,8,150,251,18],
"result":[np.NaN for _ in range(7)]})
Run Code Online (Sandbox Code Playgroud)
以下行返回 error:invalid syntax
example_set["result"].apply(lambda x : example_set["value"]if x["dirr"]==1)
Run Code Online (Sandbox Code Playgroud)
谁能告诉我我做错了什么?如果没有,请不要提出如何做到的解决方案lambda
:这只是我为弥补我的问题而做出的一个超级简化的例子.
您需要else
在lambda语句中包含返回值:
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
Run Code Online (Sandbox Code Playgroud)
你的尝试:
example_set["result"].apply(lambda x : example_set["value"]if x["dirr"]==1)
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
354 次 |
最近记录: |