我编写了这个函数来清除列中的 + 和 , :
def data_clean_installs(x):
if '+' in x:
return float(x.replace('+',''))
elif ',' in x:
return float(x.replace(',',''))
else:
return float(x)
我想使用该函数创建一个名为“Clean_Installs”的新 int 列并运行此:
apr['Clean_Installs'] = apr.Installs.astype('str').apply(data_clean_installs).apply(int)
并得到此ValueError:无法将字符串转换为 float :'10,000'
我尝试了我能想到的一切,太多了,无法放在这里,请提供任何意见...哦,我是新来的,这是我的第一个问题。抱歉,如果我违反了任何规则......真的希望有人可以提供帮助。谢谢!
最佳答案
这里不需要自定义函数,因为您似乎已经在使用 Pandas:
apr.Installs.str.replace("[,+]", "", regex=True).apply(int)
我对使用 .apply(int)
唯一担心的是,如果列中的值无法转换为整数,例如 "1,000.53",它会失败
.
稍微解释一下,regex=True
告诉 Pandas 模式(Series.str.replace
中的第一个参数)应该被视为regular expression .
模式[,+]
中的方括号形成所谓的字符类。该模式基本上告诉 Pandas,“使用正则表达式来匹配包含这些字符中的任何字符串,”、“
或 ”+”
或两者兼而有之。 ,并将它们替换为空字符串。
正则表达式非常强大,但它有它的时间和地点。这就是其中之一!
关于python - 从列中清除字符/str 并将其设为 int 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69668496/