我想在一个df中的几个列上应用一个函数,但我一直得到以下错误
TypeError: expected string or bytes-like object
这是我使用的代码
unret = lambda v: float(re.sub("[^\d\.]", "", v))
object_list = ['GDP (Billions, PPP)','GDP per Capita (PPP)','FDI Inflow (Millions)']
df[object_list] = df[object_list].apply(unret)
基本上,将格式为“$xxx,xxx”(x是一个数字)的对象转换为浮点数
我尝试通过应用.astype(str)
、.astype("string")
、.astype("|S)
将列从对象转换为字符串。我仍然不断地犯错误
编辑:
解决方案,无法直接将re应用于列表,需要逐项应用
unret = lambda v: float(re.sub("[^\d\.]", "", v))
object_list = ['GDP (Billions, PPP)','GDP per Capita (PPP)','FDI Inflow (Millions)']
df[object_list] = df[object_list].astype("string")
for v in object_list:
df[v] = [unret(i) for i in df[v]]
目前没有回答
相关问题 更多 >
编程相关推荐