有点困惑,因为我很肯定我以前曾经做过这项工作。
我创建了以下方法…
def p2f(x):
if x.strip('%').isnumeric():
return float(x.strip('%'))/100
elif x in ['SUPP', 'NEW', 'LOWCOV', 'NA', '']:
return 0.0
else:
return x
但是当我在导入的CSV文件上运行它时,会产生此错误:
AttributeError: 'str' object has no attribute 'isnumeric'
尽管我可以看到这isnumeric
是str
文档中的一个属性:
https://pandas.pydata.org/pandas-
docs/stable/generation/pandas.Series.str.isnumeric.html?highlight=isnumeric#pandas.Series.str.isnumeric
除非我没有正确解释信息?
str.isnumeric()
仅在Python 3上可用。该错误表明您使用的是Python 2,而只有Python
2unicode.isnumeric()
存在。
您应该真正使用str.isdecimal()
或更好地使用 异常处理 :
def p2f(x):
try:
return float(x.strip('%'))/100
except ValueError:
return 0.0 if x in ('SUPP', 'NEW', 'LOWCOV', 'NA', '') else x
.isnumeric()
匹配float()
不接受的BMP中的430个Unicode代码点,并且有些代码点.isdigit()
返回true也不能转换。
您可以生成自己的表进行检查:
for i in range(2 ** 16):
c = chr(i)
if c.isnumeric() or c.isdigit() or c.isdecimal():
try:
f = float(c)
except ValueError:
f = '<not convertible>'
di, de, nu = ('\u2705' if test() else '\u274c' for test in (c.isdigit, c.isdecimal, c.isnumeric))
print(f'{c!a:<6} {c}\tdigit: {di} decimal: {de} numeric: {nu} float: {f}')
产生如下输出:
'0' 0 digit: ✅ decimal: ✅ numeric: ✅ float: 0.0
'1' 1 digit: ✅ decimal: ✅ numeric: ✅ float: 1.0
'2' 2 digit: ✅ decimal: ✅ numeric: ✅ float: 2.0
'3' 3 digit: ✅ decimal: ✅ numeric: ✅ float: 3.0
'4' 4 digit: ✅ decimal: ✅ numeric: ✅ float: 4.0
'5' 5 digit: ✅ decimal: ✅ numeric: ✅ float: 5.0
'6' 6 digit: ✅ decimal: ✅ numeric: ✅ float: 6.0
'7' 7 digit: ✅ decimal: ✅ numeric: ✅ float: 7.0
'8' 8 digit: ✅ decimal: ✅ numeric: ✅ float: 8.0
'9' 9 digit: ✅ decimal: ✅ numeric: ✅ float: 9.0
'\xb2' ² digit: ✅ decimal: ❌ numeric: ✅ float: <not convertible>
'\xb3' ³ digit: ✅ decimal: ❌ numeric: ✅ float: <not convertible>
'\xb9' ¹ digit: ✅ decimal: ❌ numeric: ✅ float: <not convertible>
'\xbc' ¼ digit: ❌ decimal: ❌ numeric: ✅ float: <not convertible>
'\xbd' ½ digit: ❌ decimal: ❌ numeric: ✅ float: <not convertible>
'\xbe' ¾ digit: ❌ decimal: ❌ numeric: ✅ float: <not convertible>
并且您会发现只有该decimal
列的所有不可转换代码点都有叉号。
如果要isdecimal()
在Python 2中使用,则必须先将字节字符串解码为Unicode。
问题内容: 为什么被认为是物体?返回列表中的第一项,但我不能追加到列表中的第一项。谢谢。 Edit01: @pyfunc:谢谢您的解释;现在我明白了。 我需要一个清单清单。因此“来自表单”应为列表。我做到了(如果这不是正确的方法,请更正): 问题答案: myList [1]是myList的元素,其类型是字符串。 myList [1]是str,您不能附加它。myList是一个列表,您应该已经附加了它
问题内容: 我正在尝试使用SQLAlchemy + Python将一个项目添加到我的数据库中,但始终出现错误。 我的database_setup.py: 在将sqlalchemy导入到终端后,我定义了一个要插入的项目: 并绘制一个会话以添加和提交: 当我提交时,我不断收到此错误: 我在我的公司表中添加了一个“ Jawbone”对象,我理解我的“ JawboneUP3”应该与之相关。该对象是通过我通
Selenium/Python自动化新手。我在自动注册表单时被阻止。下拉列表是必需的元素,但我收到以下错误。。。 AttributeError:“str”对象没有属性“tag_name” 我把我的代码贴在下面,但是在网上找不到任何答案来解释为什么会这样。非常感谢任何/所有的帮助。 错误来自sel=Select('teamElement')行。
问题内容: 我想转换火花数据框架以使用以下代码添加: 详细的错误消息是: 有人知道我在这里做错了吗?谢谢! 问题答案: 您无法使用数据框,但可以将数据框转换为RDD并通过映射将其映射。在Spark 2.0之前,别名为。使用Spark 2.0,您必须先明确调用。
问题内容: 我如何解决此错误,我是从GitHub下载此代码的。 引发错误 请帮我解决这个问题! 我用了: 我得到这个错误。有人帮我,我只想让它工作为什么这么难? 问题答案: 我怀疑您从中复制代码的地方启用了急切执行功能,即在程序开始时调用了该位置。 您也可以这样做。希望能有所帮助。 更新:请注意,默认情况下,TensorFlow 2.0中启用了急切执行。因此,以上答案仅适用于TensorFlow