删除标点符号时出错:' float'对象没有属性'翻译'

时间:2018-05-21 06:55:37

标签: string python-3.x pandas

我试图通过执行以下操作从数据框中的col中删除标点符号:

def remove_punctuation(text):
      return text.translate(table)

df['data'] = df['data'].map(lambda x: remove_punctuation(x))

但是我收到以下错误:

  

'浮动'对象没有属性'翻译'

我在这里检查了col的dtype:

from pandas.api.types import is_string_dtype
is_string_dtype(df['data'])

并获得以下输出:

  

我不确定这里出了什么问题?

我也尝试过以下方法: translator = str.maketrans('','',string.punctuation)

def remove_punctuation(text):
      return text.translate(translator)
df['data'] = df['data'].map(lambda x: remove_punctuation(x))

但我仍然遇到同样的错误

1 个答案:

答案 0 :(得分:0)

您的df ['data']具有NaN个元素。type(np.nan)是浮点型的。因此,在删除标点符号时,您会收到错误消息“'float'对象没有属性'translate'”。要解决此问题,您可以

  1. 从df ['data']中删除NaN元素,或
  2. 使用df['data'] = df.fillna({'data':''})用空字符串填充NaN值。

照顾好熊猫系列中的NaN元素后,就可以使用地图功能删除标点符号了。

希望这会有所帮助!