Lambda函数内地图熊猫

2024-04-25 22:28:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我无法理解下面定义的lambda函数中if-else-if-else的结构。尤其是-零件:

if x != x

在本规范中:

^{pr2}$

PS:我知道上面的代码正在格式化ID值,并返回一个输入中可能没有小数的字符串。在


Tags: lambda函数字符串代码规范idif定义
1条回答
网友
1楼 · 发布于 2024-04-25 22:28:32

我认为它是用来处理NaNs的,因为:

np.nan != np.nan

所以如果NaNs,它返回NaNs处理字符串。在

样品:

^{pr2}$

如果省略它,它会工作,因为转换为字符串,但第一个值不是np.nan,而是字符串nan

a = check['Id'].map(lambda x: (str(x)[:str(x).rfind('.0')] if str(x).rfind('.0') != -1 else str(x)))
print (a)
0     nan
1    0909
2     023
3      09
Name: Id, dtype: object

如果所有值都是带有NaNs的字符串,并删除转换为字符串:

a = check['Id'].map(lambda x: ((x)[:(x).rfind('.0')] if (x).rfind('.0') != -1 else (x)))
print (a)

AttributeError: 'float' object has no attribute 'rfind'

a = check['Id'].map(lambda x: x if x != x else ((x)[:(x).rfind('.0')] if (x).rfind('.0') != -1 else (x)))
print (a)
0     NaN
1    0909
2     023
3      09
Name: Id, dtype: object

相关问题 更多 >