对数据帧使用 oop
using oop for dataframes
我想重构我的代码并尝试创建用于基本数据帧操作的 OOP 设置。
这在更大的上下文中可能没有意义,但我正在努力更好地掌握 OOP。
我尝试了重命名列功能,但它不适用于我创建的实例 (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')
但总的来说,特别是针对 OOP,您想要的是 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')
我想重构我的代码并尝试创建用于基本数据帧操作的 OOP 设置。 这在更大的上下文中可能没有意义,但我正在努力更好地掌握 OOP。 我尝试了重命名列功能,但它不适用于我创建的实例 (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')
但总的来说,特别是针对 OOP,您想要的是 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')