我想重構我的代碼并嘗試為基本資料框操作創建 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))
輸出到此時
<類'主要.DataframeOperations'>
m1.rename_column('col1','col2')
運行此函式時出現以下錯誤:
TypeError:“set”物件不可呼叫
uj5u.com熱心網友回復:
在列中定義一個集合而不是字典,試試這個:
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')
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/471682.html
下一篇:方法在它所在的類之外不起作用
