如何在Pandas中提取列表中的单个值?寻求更优数值提取方案
高效提取DataFrame预算列数值的几种方法
嘿,我来给你分享几个比多次调用str.replace更高效简洁的方案,刚好适配你这种带[]和%的数值提取场景!
方法1:正则提取核心数值(最推荐)
直接用str.extract精准匹配数字和小数点部分,一步到位拿到我们需要的数值:
df['budget_clean'] = df['budget'].str.extract(r'(\d+\.\d+)').astype(float)
运行后就能得到你想要的结果:
0 45.55 1 34.54 2 12.21 3 99.12 Name: budget_clean, dtype: float64
这个方法的优势是精准定位,只提取我们需要的数值部分,避免多余的字符串操作,大数据集下效率会比多次replace高不少。
方法2:一次性移除首尾符号
先用str.strip去掉首尾的方括号,再替换掉百分号,比两次replace少一次调用:
df['budget_clean'] = df['budget'].str.strip('[]').str.replace('%', '').astype(float)
strip('[]')会一次性清除字符串开头的[和结尾的],代码更简洁,逻辑也更清晰。
方法3:批量替换所有非目标字符
用正则匹配所有不是数字和小数点的字符,一次性替换为空:
df['budget_clean'] = df['budget'].str.replace(r'[^\d.]', '', regex=True).astype(float)
这里[^\d.]表示匹配所有**不是数字(\d)和小数点(.)**的字符,一次操作就搞定所有多余符号,代码最短。
补充说明:列表中仅包含一个元素。
内容的提问来源于stack exchange,提问作者shantanuo
相关产品推荐
相关产品推荐

