如何拆分Pandas Series字符串、应用locale规则转浮点型并解决报错?
修正代码及说明
完整可运行代码
import locale import pandas as pd # 配置英文区域规则,使用兼容度更高的标识 locale.setlocale(locale.LC_ALL, 'en_US.UTF-8') # 链式执行两步转换:先移除VSO后缀,再按区域规则转浮点 df_test['amount'] = df_test['amount'].str.removesuffix(' VSO').apply(locale.atof)
若使用的pandas版本较低不支持
removesuffix方法,可将该部分替换为.str.replace(' VSO$', '', regex=True),通过正则匹配后缀实现相同移除效果。
原代码错误原因
- 分割字符串后直接取
[0]:df_test['amount'].str.split(' VSO')返回的是每个元素为列表的Series,直接写[0]只会取整个Series的第一个元素,需要加.str[0]才会对每行的分割结果取值 - 直接传入整个Series到
locale.atof:locale.atof是单字符串处理函数,不支持批量处理数组/序列,需要通过apply方法逐行调用函数
内容的提问来源于stack exchange,提问作者Luiz Scheuer
相关产品推荐
相关产品推荐

