我正在解决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/