如何移除DataFrame列中的部分文本?解决Python pandas中Series对象无partition属性的报错问题
解决Series调用partition()报错的问题
没关系,刚接触Python和pandas遇到这种问题完全正常,别担心😎
问题出在哪?
你报错的核心原因很明确:partition()是单个字符串对象的专属方法,但df2["Player"]是pandas的Series对象(也就是一整列数据),直接在Series上调用partition()肯定会报错——因为Series本身就没有这个方法。
另外你后面写的head = df2["Player"]其实完全覆盖了之前的操作,等于白忙活了,这一步是多余的哦。
正确的解决方法
要对Series里的每一个字符串元素批量执行分割操作,得用到pandas提供的str访问器,它能帮你把字符串方法批量应用到Series的每个元素上。这里有两种常用的实现方式:
方式1:用str.partition()
和你最初的思路一致,只需要加上str访问器即可:
# 对每个球员姓名执行partition,提取反斜杠前的内容 df2["Player_clean"] = df2["Player"].str.partition("\\")[0]
解释:str.partition("\\")会返回一个包含三列的DataFrame(分别对应分隔符前的内容、分隔符本身、分隔符后的内容),我们取第0列就得到了想要的纯球员姓名。
方式2:用str.split()
如果只需要保留分隔符前的部分,用split实现会更简洁:
df2["Player_clean"] = df2["Player"].str.split("\\").str[0]
这里str.split("\\")会把每个字符串按反斜杠分割成列表,再用.str[0]取每个列表的第一个元素,也就是反斜杠前的内容。
小提示
操作完成后可以用df2["Player_clean"].head()查看前几行结果,确认是不是符合你的预期~
内容的提问来源于stack exchange,提问作者SanthiCazorla
相关产品推荐
相关产品推荐

