'NoneType'对象不可调用Python Pandas Dataframe

时间:2019-02-25 08:04:04

标签: python pandas function

我有一个简单的函数,它接受一个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 :(得分:1)

我认为您需要分配重新分配的列:

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