Python中DataFrame替换字符失效:为何bitcoin['Volume']去逗号不生效?
问题分析与解决
我来帮你拆解这两个问题:
1. 为什么bitcoin['Volume'].replace(',', '')没生效?
你用的是pandas的Series.replace()方法,这个方法默认是匹配整个元素值来替换的,而不是逐个替换字符串里的逗号。也就是说,它只会把那些完全等于','的元素替换成空字符串,而你的数据里每个元素都是带多个逗号的长数字字符串,所以这个操作根本没找到要替换的目标,自然输出还是原来的内容。
正确的做法是用pandas的字符串方法str.replace(),它会针对每个元素的字符串内容进行全局替换:
# 生成新的Series,需要赋值回去覆盖原列 bitcoin['Volume'] = bitcoin['Volume'].str.replace(',', '')
2. 为什么inplace=True后test是None?
当你给replace()(或者其他pandas方法)加上inplace=True参数时,这个方法会直接修改原DataFrame/Series对象,并且不会返回任何结果(也就是返回None)。所以你把这个方法的返回值赋值给test,得到的自然就是None啦。
如果要用inplace=True,正确的写法是单独执行,不要赋值:
# 直接修改原数据,不需要赋值 bitcoin['Volume'].str.replace(',', '', inplace=True)
之后直接查看bitcoin['Volume']就能看到修改后的结果了。
另外补充一点:处理完逗号后,你可能还需要把这个列转换成数值类型(比如int或float),方便后续计算:
bitcoin['Volume'] = bitcoin['Volume'].str.replace(',', '').astype(int)
内容的提问来源于stack exchange,提问作者Jake Park
相关产品推荐
相关产品推荐

