我在熊猫数据框中有以下数据集:
I219
F03
C449
C189
我需要创建一个新列,其中如果单元格的长度为4,则在第三个字符后需要有一个句点,如下所示:
I21.9
F03
C44.9
C18.9
在深入研究StackOverflow之后,我想出了这个lambda表达式,但我似乎无法让它起作用
df['UNDERLYINGCAUSE_TEST'] = df.UNDERLYINGCAUSE.apply(lambda x: x if len(x) == 4 else x[0:3] + '.' + x[3:])
我得到的错误是“对象类型”float“as no len()”。不确定这是从哪里来的,因为我在这列中没有任何浮点值
看来,三元运算符的结果应该是相反的。要确保列类型为string,可以在应用lambda之前对其进行更改:
你就快到了。您的lambda函数正在执行与您所希望的完全相反的操作,因为格式不正确。此外,还可以将列
dtype
转换为带有astype(str)
的对象。试试这个:或者,由于您正在处理列/系列操作,因此可以使用^{} 而不是^{} ,这在列操作中更快、更有效
输出:
我发现了我的错误。我需要在if语句的str()中放入x
相关问题 更多 >
编程相关推荐