python - 从列中清除字符/str 并将其设为 int 时出现问题

标签 python pandas

我编写了这个函数来清除列中的 + 和 , :

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/

相关文章:

python - 如何检查数据框中是否有值

python - 在 Python 中将 scad 文件格式转换为 STL

python - Pyspark count() 和 collect() 不起作用

python - Python 标准库代码 Pylint 评分低的原因

Python从名称字符串的末尾删除中间首字母

python - 如何通过 Pandas 而不是从文件加载 pickle

python - 使用 Pandas 将三个或更多数据帧合并为单个数据帧并保留空值

python - 如何使用 Python 移动到 Ubuntu 上的特定窗口?

python - 从 redis pub/sub 中丢失的连接中恢复

python - df = pd.read_csv ('iris.csv' ) 指向 azure blob 报告中的文件 [errno 2] 没有这样的文件或目录