我正在解决Dataquest问题:https://app.dataquest.io/m/293/data-cleaning-basics/5/removing-non-digit-characters
问题的解决方案是用一个字符串替换dataframeram中的列laptops,该字符串可以通过删除字符串“GB”转换为数值数据类型。
在这个问题中,代码laptops['ram'] = laptops['ram'].str.lower().replace('gb','')没有生成正确的答案,我试过了,因为它解释了case。
但是,laptops['ram'] = laptops['ram'].str.replace('GB','')确实有效。显然,所有源数据都包含大写的字符串“GB”。
这是为什么?pd.Series.str.lower()绝对是一种方法,为什么第一种方法不能返回期望的结果?

最佳答案

默认子字符串替换需要Series.str.replace

laptops = pd.DataFrame({'ram': ['ss GB', 'fff GB', 'GB']})

laptops['ram'] = laptops['ram'].str.lower().str.replace('gb','')
print (laptops)

0   ss
1  fff
2

或在regex=True中添加Series.replace
laptops['ram'] = laptops['ram'].str.lower().replace('gb','', regex=True)
print (laptops)
    ram
0   ss
1  fff
2

如果仅使用Series.replace则不适用于子字符串:
laptops['ram'] = laptops['ram'].str.lower().replace('gb','')
print (laptops)
      ram
0   ss gb
1  fff gb
2

关于python - pd.Series.str.lower.replace('str','replace_str')不起作用,但是pd.Series.str.replace。('STR','replace_str')可以吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57000448/

10-13 03:53