Pandas处理DataFrame数值列出现StringMethods或str对象无属性错误如何解决
报错触发原因
- 报错
'StringMethods' object has no attribute 'apply':apply是Pandas Series对象的专属方法,你将其直接调用在.str访问器返回的StringMethods对象上,该类对象本身不存在apply方法。 - 报错
'str' object has no attribute 'str':apply传入lambda函数的参数是每个单元格的单个字符串值,.str是Series对象专属的字符串处理访问器,普通Python字符串没有该属性,调用自然触发报错。
正确实现代码
你不需要使用apply遍历元素,直接通过Series的.str访问器就能完成全列的批量切片操作,同时替换逻辑建议锚定末尾避免误替换:
df_out['MY_COLUMN'] = df_out['MY_COLUMN'].astype(str) \ .str.replace(r'\.0$', '', regex=True) \ .str.zfill(12) \ .str[:12]
代码说明
- 正则规则
r'\.0$'添加了末尾锚定符$,只会移除末尾的.0后缀,不会误替换数值中间出现的.0字符 .str[:12]直接作用于整个Series,批量对所有字符串做前12位截断,效率远高于逐元素遍历
内容的提问来源于stack exchange,提问作者banana_99
相关产品推荐
相关产品推荐

