解决Pandas中'method' object is not subscriptable错误:删除单元格开头的1
解决Pandas中str.replace触发TypeError的问题及开头数字替换需求实现
错误原因
你报错的核心原因是调用str.replace时用了方括号[],但str.replace是Pandas的方法,必须用**圆括号()**来传递参数。方括号是用来做索引/切片的,Python会把str.replace当成可索引对象,而实际上它是方法,因此抛出'method' object is not subscriptable错误。
需求修正+代码修复
另外注意你的需求是删除单元格开头的数字1,直接替换所有"1"会把单元格里其他位置的1也换掉,所以要用到正则表达式的^匹配开头。同时建议先处理空值,避免非字符串类型导致的报错:
import pandas as pd S_T_1 = r"C:\Users\a.heidarzadeh\OneDrive\دسکتاپ\charisma project\excel file creat\S T+1.xlsx" S_T_2 = r"C:\Users\a.heidarzadeh\OneDrive\دسکتاپ\charisma project\excel file creat\S T+2.xlsx" df = pd.read_excel(S_T_1) # 先处理空值,再用正则替换开头的1,替换为空字符串(要换成空格就把''改成' ') df['Unnamed: 5'] = df['Unnamed: 5'].fillna('').astype(str).str.replace(r'^1', '', regex=True) print(df)
代码说明
fillna(''):把列中的空值填充为空字符串,避免后续字符串操作报错astype(str):确保列中所有值都是字符串类型,保证str.replace能正常调用str.replace(r'^1', '', regex=True):^1是正则表达式,匹配字符串开头的"1",替换为空字符串(如果需要替换成空格,把第二个参数改成' '即可),regex=True表示启用正则匹配
内容的提问来源于stack exchange,提问作者sirius black
相关产品推荐
相关产品推荐

