Не понимаю этого AttributeError: у объекта 'function' нет атрибута 'isalpha' - PullRequest
0 голосов
/ 22 марта 2019

См. Следующий код

# import
import pandas as pd
import numpy as np
import string 

# create data frame
data = {'Name': ['Jas,on', 'Mo.lly', 'Ti;na', 'J:ake', '!Amy', "Myself"]}
df = pd.DataFrame(data, columns = ['Name'])
df

# get cleanName - Function
def getCleanName(pName):
    vRetVals = pName.translate(str.maketrans(" ", " ", string.punctuation))
    return(vRetVals)  

# clean Name
print("PreClean Good Rows", df.shape[0] - df.Name.map(lambda v:v.isalpha()).sum())
df['Name'] = [getCleanName for n in df.Name]
print("PostClean Good Rows", df.shape[0] - df.Name.map(lambda v: v.isalpha()).sum())

Выпуск

Когда строка ниже запускается в первый раз, она работает правильно:

print("PreClean Good Rows", df.shape[0] - df.Name.map(lambda v: v.isalpha()).sum())

при повторном запуске этой же строки выдается следующая ошибка

AttributeError: 'function' object has no attribute 'isalpha'

Есть идеи, в чем причина проблемы?

1 Ответ

2 голосов
/ 22 марта 2019

Вы забыли вызвать getCleanName, поэтому ваш list заканчивает связкой идентичных ссылок на функцию. Измените его на:

df['Name'] = [getCleanName(n) for n in df.Name]
#                         ^^^ changed

для фактического вызова функции и использования результатов.

...