error en re.sub con “Cadena esperada u objeto similar a bytes”

He leído varias publicaciones con respecto a este error, pero todavía no puedo resolverlo. Cuando bash pasar por mi función:

def fix_Plan(location): letters_only = re.sub("[^a-zA-Z]", # Search for all non-letters " ", # Replace all non-letters with spaces location) # Column and row to search words = letters_only.lower().split() stops = set(stopwords.words("english")) meaningful_words = [w for w in words if not w in stops] return (" ".join(meaningful_words)) col_Plan = fix_Plan(train["Plan"][0]) num_responses = train["Plan"].size clean_Plan_responses = [] for i in range(0,num_responses): clean_Plan_responses.append(fix_Plan(train["Plan"][i])) 

Aquí está el error:

 Traceback (most recent call last): File "C:/Users/xxxxx/PycharmProjects/tronc/tronc2.py", line 48, in  clean_Plan_responses.append(fix_Plan(train["Plan"][i])) File "C:/Users/xxxxx/PycharmProjects/tronc/tronc2.py", line 22, in fix_Plan location) # Column and row to search File "C:\Users\xxxxx\AppData\Local\Programs\Python\Python36\lib\re.py", line 191, in sub return _compile(pattern, flags).sub(repl, string, count) TypeError: expected string or bytes-like object 

Como mencionaste en los comentarios, algunos de los valores parecían ser flotantes, no cadenas. Deberá cambiarlo a cadenas antes de pasarlo a re.sub . La forma más sencilla es cambiar la location a str(location) cuando se utiliza re.sub . De todos modos, no estaría mal hacerlo, incluso si ya es una str .

 letters_only = re.sub("[^a-zA-Z]", # Search for all non-letters " ", # Replace all non-letters with spaces str(location))