“float”对象没有“strip”属性

7
我想清洗我df['emp_length']中的一列数据,截图中已显示1。但是当我使用

df_10v['emp_length'] = df_10v['emp_length'].map(lambda x: x.lstrip('<').rstrip('+'))

删除我不想要的东西。它给了我一个错误:

'float' object has no attribute 'lstrip'

然而,类型显示为对象而不是浮点数。我也尝试了.remove,但是给我同样的错误。我还尝试了


df['column'] = df['column'].astype('str') 

我想将df_10v['emp_length']的值转换为字符串并进行剪切,但这似乎不起作用。有人知道如何解决吗?谢谢!


你的列长什么样? - cs95
显然,x 是一个浮点数。 - Jean-François Fabre
该列在屏幕截图链接中,我无法发布图片... - Pumpkin C
为什么 x 是一个浮点数,我以为它是一个对象...为什么会这样? - Pumpkin C
1
我认为你的截图与你实际正在处理的数据不符。在截图中,“emp_length”包含字符串,而你的“map”转换将按预期工作。如果你发布一个最小、完整和可验证的示例,这将更容易帮助你解决问题。 - andrew_reece
1个回答

14

更新: 移除所有非数字字符:

df_10v['emp_length'] = df_10v['emp_length'].astype(str).str.replace('\D+', '')

旧回答:

如果我理解正确:

df_10v['emp_length'] = df_10v['emp_length'].astype(str).str.lstrip('<').str.rstrip('+')

非常感谢。我已经成功删除了“<”和“年”,但仍无法删除“+”。我尝试先删除年份,然后再删除“+”,但这并不起作用。 df_10v ['emp_length'] = df_10v ['emp_length'] .astype(str) .str.lstrip('<') .str.rstrip('years') df_10v ['emp_length'] = df_10v ['emp_length'] .astype(str) .str.rstrip('+') - Pumpkin C
对于那些有“10+年”经验的人,我无法去掉“+”。 - Pumpkin C
是的,那就是我想要做的。 - Pumpkin C
明白了!谢谢!我对这些还比较新...还在努力学习如何提出正确的问题。 - Pumpkin C
它有效了。非常感谢你。还有,感谢你的建议! - Pumpkin C
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接