gpt4 book ai didi

python - map pandas 内的 Lambda 函数

转载 作者:行者123 更新时间:2023-12-01 09:27:03 24 4
gpt4 key购买 nike

我无法理解下面定义的 lambda 函数中 if else if else 的结构。特别是 - 部分:

if x != x

在此代码中:

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

PS:我发现上面的代码正在格式化 ID 值并返回一个不带小数点的字符串,该字符串可能存在于输入中。

最佳答案

我认为它适用于 NaN,因为:

np.nan != np.nan

因此,如果 NaN 则返回 NaN,否则处理字符串。

示例:

check = pd.DataFrame({'Id':[np.nan, '0909.0', '023', '09.06']})

a = check['Id'].map(lambda x: x if x != x else (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

如果省略它,它可以工作,因为转换为字符串,但第一个值不是 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

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

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

关于python - map pandas 内的 Lambda 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50303244/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com