Я хочу реорганизовать свой код и попытаться создать ООП, настроенный для основных манипуляций с фреймами данных. Это может не иметь смысла в более широком контексте, но я пытаюсь лучше понять ООП. Я пробовал функцию переименования столбца, но она не работает с моим созданным экземпляром (m1).
df1 = pd.read_sql(query, conn)
class DataframeOperations():
def __init__(self, df):
self.df = df
def rename_column(self, name:'string', name_adj:'string'):
self.df.rename(columns = {name, name_adj}, inplace=True)
return self.df
m1 = DataframeOperations(df1)
print(type(m1))
вывод до этого момента
<class 'main.DataframeOperations'>
m1.rename_column('col1','col2')
Я получаю следующую ошибку при запуске этой функции:
TypeError: 'set' object is not callable






в столбцах вы определяете набор вместо словаря, попробуйте следующее:
df1 = pd.DataFrame({'a':[1,3,4]})
class DataframeOperations():
def __init__(self, df):
self.df = df
def rename_column(self, name:'string', name_adj:'string'):
replace_dict = {name: name_adj}
self.df.rename(columns =replace_dict , inplace=True)
return self.df
m1 = DataframeOperations(df1)
print(type(m1))
m1.rename_column('a','b')
Но в целом и особенно для ООП вам нужно, чтобы DataframeOperations наследовал от pd.DataFrame:
class DataframeOperations(pd.DataFrame):
def rename_column(self, name:'string', name_adj:'string'):
replace_dict = {name: name_adj}
self.rename(columns =replace_dict , inplace=True)
return self
df1 = DataframeOperations({'a':[1,3,4]})
df1.rename_column('a','b')