我有一个简单的函数,它接受一个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.
这令人困惑,因为我的程序中还有其他功能的格式类似,并且没有收到错误。
答案 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