Python 3.8下如何按空格将DataFrame单列拆分为4列并解决报错
问题解决方法
报错根源
TypeError: 'function' object is not subscriptable 报错是因为代码中对函数类型的对象使用了[]下标操作,你遇到的情况90%以上是以下两种原因:
- 引用id列时漏写了引号,直接写了
df1[id]而非df1["id"]:Python内置了id()函数,你没加引号时解释器会把id识别为内置函数,对函数加[]取索引就会触发该报错 - 之前的代码中不小心覆盖了
df1、str等内置变量/你定义的DataFrame变量为函数类型
正确实现步骤
第一步:排查变量问题
依次运行以下代码确认变量类型正常:
# 确认df1是DataFrame类型 print(type(df1)) # 输出应为 <class 'pandas.core.frame.DataFrame'> # 确认你没有覆盖str内置类 print(type(str)) # 输出应为 <class 'type'>
如果上述输出不符合,检查之前的代码修改变量名,不要覆盖内置对象和已定义的DataFrame变量。
第二步:拆分id列
优先用性能更高的str.split方法实现,注意用\s+匹配任意数量的空白字符,避免多个连续空格导致拆分出错:
# 先强制将id列转为字符串类型,避免非字符串类型无str属性的问题 df1["id"] = df1["id"].astype(str) # 按空格拆分并赋值到新列 df1[["City", "State", "Country", "indicator"]] = df1["id"].str.split(pat="\s+", expand=True)
内容的提问来源于stack exchange,提问作者Jacob2309
相关产品推荐
相关产品推荐

