如何从Pandas DataFrame的ranking_pos列提取排名数字并转整数?
Pandas提取ranking_pos列中的排名整数
以下几种方法都能解决你的问题,直接套用即可:
方法1:字符串分割+去前缀
先按空格分割字符串,取#数字部分,再去掉#后转整数:
df['ranking'] = df['ranking_pos'].str.split().str[0].str.lstrip('#').astype(int)
str.split():默认按空格分割每行内容,得到['#123', 'of', '12,216']str[0]:取分割后的第一个元素#123str.lstrip('#'):去掉开头的#,得到'123'astype(int):转换为整数类型
方法2:正则表达式提取(推荐)
用正则直接匹配#后的数字,一步到位:
df['ranking'] = df['ranking_pos'].str.extract(r'#(\d+)').astype(int)
- 正则
r'#(\d+)':#匹配前缀,(\d+)捕获一个或多个连续数字(括号表示提取目标内容) str.extract():只提取捕获组内的内容,直接得到'123'astype(int):转换为整数类型
扩展:处理带千分位的排名
如果排名数字包含千分位逗号(比如#1,234 of ...),可以先去掉逗号再转换:
df['ranking'] = df['ranking_pos'].str.extract(r'#([\d,]+)').str.replace(',', '').astype(int)
内容的提问来源于stack exchange,提问作者hiz
相关产品推荐
相关产品推荐

