Объект NoneType не может быть вызван в Python Pandas Dataframe - PullRequest
0 голосов
/ 25 февраля 2019

У меня есть простая функция, которая принимает объект DataFrame и удаляет столбцы определенных символов:

 def tidy_columns(self):
      self.columns.str.replace(' ', '_')
      if '_' in self.columns[-1]:
        self.columns.str.replace('_', '')
    elif '?' in df.columns:
        self.columns.str.replace('?', '')

Однако, когда я вызываю функцию в функции main () следующим образом:

df.tidy_columns()

Я получаю сообщение об ошибке:

TypeError: 'NoneType' object not callable. 

Это сбивает с толку, потому что у меня есть другие функции в моей программе, которые отформатированы аналогичным образом, и я не получаю ошибок.

1 Ответ

0 голосов
/ 25 февраля 2019

Я думаю, вам нужно назначить столбцы с перераспределением:

df = pd.DataFrame(columns=['ss ds', 'ss?aa', 'as sa'])
print (df)
Empty DataFrame
Columns: [ss ds, ss?aa, as sa]
Index: []

#replace first value of string by empty space and all another values by `_`
df.columns = (df.columns[:1].str.replace(' ', '').tolist() + 
              df.columns[1:].str.replace(' ', '_').tolist())
df.columns = df.columns.str.replace('?', '')
print (df)
Empty DataFrame
Columns: [ssds, ssaa, as_sa]
Index: []

Так что ваша функция должна быть изменена:

def tidy_columns(self):

    self.columns = (self.columns[:1].str.replace(' ', '').tolist() + 
                    self.columns[1:].str.replace(' ', '_').tolist())
    self.columns = self.columns.str.replace('?', '')
    return self.columns
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...