Pandas,TypeError:应为string或byteslike对象

2024-10-03 19:29:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在一个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]]

Tags: lambdaredfstringobjectfloatlistppp