我正在尝试应用一个函数来检查存储在一系列中的字符串是否是数字,如果是,则将它们变为无,如果不是则什么也不做。系列如下:
0 'EUR'
1 '327'
2 'None'
3 'USD'
检查条目是否为表示为字符串的数字的函数:
def is_number(s):
try:
float(s)
return True
except (TypeError,ValueError):
pass
try:
import unicodedata
unicodedata.numeric(s)
return True
except (TypeError, ValueError):
pass
return False
def num_to_none(target):
if is_number(target):
target = None
我这样调用函数:
result = mySeries.apply(num_to_none)
但我得到以下res结果:
0 'None'
1 'None'
2 'None'
3 'None'
期望的结果是:
0 'EUR'
1 'None'
2 'None'
3 'USD'
我目前只是在一个带有小数据框(10000 行,70 列)的测试环境中玩这个,但如果我能让它工作,我希望将它应用到更大的数据框,所以也欢迎效率建议。提前致谢。