替换字符串时出现“AttributeError:'float'对象没有属性'replace'”错误

新手上路,请多包涵

我有一列,里面有文字。我必须替换 (‘:’,’ ‘)。

当我运行这段代码时:

 df["text"] = [x.replace(':',' ') for x in df["text"]]

我面临这个错误:

 AttributeError: 'float' object has no attribute 'replace'

AttributeError                            Traceback (most recent call
last)
<ipython-input-13-3c116e6f21e2> in <module>
  1 #df["text"] = df["text"].astype(str)
----> 2 df["text"] = [x.replace(':',' ') for x in df["text"]]

<ipython-input-13-3c116e6f21e2> in <listcomp>(.0)
  1 #df["text"] = data["NOTES_ENT"].astype(str)
----> 2 df["text"] = [x.replace(':',' ') for x in df["text"]]

AttributeError: 'float' object has no attribute 'replace'

原文由 anil 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 2.5k
1 个回答

在我看来,问题是列中缺少值,因此使用 pandas 方法 Series.str.replaceSeries.replace 代替列表理解:

 df["text"] = df["text"].str.replace(':',' ')

或者:

 df["text"] = df["text"].str.replace(':',' ', regex=True)

列表理解的解决方案是可能的,只需要测试字符串的 if-else 语句:

 df["text"] = [x.replace(':',' ') if isinstance(x, str) else x for x in df["text"]]

样本

 df = pd.DataFrame({'text':['qq:ww','e:', np.nan]})
df["text"] = df["text"].str.replace(':',' ')

print (df)
    text
0  qq ww
1     e
2    NaN

原文由 jezrael 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏