我有一栏中有文字。我必须替换(':','')。
当我运行此代码时:
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'
答案 0 :(得分:2)
如错误消息中所示,文本必须为字符串。您可以尝试更改数据类型:
text = str(text)
答案 1 :(得分:0)
请尝试在代码中添加以上行,然后让我知道这是否适合您。
df["text"] = df["text"].astype(str)
df["text"] = [x.replace(':',' ') for x in df["text"]]
答案 2 :(得分:0)
错误非常明显。您正在尝试替换浮动字符。 x可能是浮点数。您可能想做str(x)可以使您
str
但我看不到浮点数包含:
的情况答案 3 :(得分:0)
我认为问题在于列中缺少值,因此请使用pandas方法Series.str.replace
或Series.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