Python数据分析:如何移除DataFrame列中所有文本仅保留数字?
从长度不固定的字符串列中提取数字的通用方法
针对你的reviews_count列数字长度不固定的情况,有两种通用方法可以提取所有数字:
方法1:提取连续数字序列(推荐,适合单段数字场景)
用str.extract配合正则表达式提取字符串中的第一段连续数字,适合类似"123条评价"、"已有12345人打分"这类只有一段数字的场景:
# 提取数字并转为整数类型 df['reviews_count_num'] = df['reviews_count'].str.extract(r'(\d+)', expand=False).astype(int)
r'(\d+)'表示匹配一个或多个连续数字,expand=False保证返回Series而不是DataFrame,最后用astype(int)把提取到的字符串数字转为整数,方便后续分析。
方法2:移除所有非数字字符(适合多段数字拼接场景)
如果你的字符串里有多段数字(比如"123条+456追加评价"),可以用str.replace把所有非数字字符删掉,将所有数字拼接成完整数字:
df['reviews_count_num'] = df['reviews_count'].str.replace(r'\D', '', regex=True).astype(int)
r'\D'表示匹配所有非数字字符,regex=True启用正则匹配,这样不管数字在什么位置、长度多少,都能保留下来。
处理混合类型列(既有字符串又有整数)
如果reviews_count列同时存在字符串和整数类型,先统一转为字符串再处理:
df['reviews_count_num'] = df['reviews_count'].astype(str).str.extract(r'(\d+)', expand=False).astype(int)
内容的提问来源于stack exchange,提问作者user20771829
相关产品推荐
相关产品推荐

