我正在解决Dataquest问题:https://app.dataquest.io/m/293/data-cleaning-basics/5/removing-non-digit-characters
问题的解决方案是将数据帧ram
中的列laptops
替换为可以通过删除字符串“ GB”转换为数字数据类型的字符串。
在此问题中,代码laptops['ram'] = laptops['ram'].str.lower().replace('gb','')
无法生成正确的答案,我尝试使用该答案,因为它可以区分大小写。
但是,laptops['ram'] = laptops['ram'].str.replace('GB','')
确实有效。显然所有源数据的大写字母都包含字符串“ GB”。
这是为什么? pd.Series.str.lower()
绝对是一种方法,那么第一种方法为什么不返回期望的结果?
答案 0 :(得分:1)
您需要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
或在Series.replace
中添加regex=True
:
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