1 回答

TA貢獻(xiàn)1813條經(jīng)驗(yàn) 獲得超2個(gè)贊
由于您正在定義一個(gè)方法,因此您希望在對(duì)象上調(diào)用它:
data.as_data_frame()
但是你的定義使用 ,大概是全局變量。但您應(yīng)該使用內(nèi)部狀態(tài)。所以,大概,你想要.dataself.__matriz
題外話:
停止使用雙下劃線和不必要的屬性,所有這些都是樣板,違背了整個(gè)目的。在Python中,你的類應(yīng)該看起來像這樣:property
class Analisis:
def __init__(self, matriz=None): # watch out for mutable default arguments
if matriz is None:
self.matriz = matriz
else:
self.matriz = np.array([])
self.filas = matriz.shape[0]
self.columnas = matriz.shape[1]
現(xiàn)在關(guān)于你的方法,你想要:
class Analisis:
def __init__(self, matriz=None): # watch out for mutable default arguments
if matriz is None:
self.matriz = np.array([])
else:
self.matriz = matriz
self.filas = matriz.shape[0]
self.columnas = matriz.shape[1]
def as_data_frame (self):
dataset = pd.DataFrame(
{
'Columna1': self.matriz[:, 0],
'Columna2': self.matriz[:, 1],
'Columna3': self.matriz[:, 2]
}
)
return dataset
你可以簡(jiǎn)化你的方法,就像:
def as_data_frame (self):
dataset = pd.DataFrame(
self.matriz[:,:3],
columns=['Columna1','Columna2','Columna3']
)
return dataset
請(qǐng)注意,二維數(shù)組始終可以直接轉(zhuǎn)換為數(shù)據(jù)幀:
>>> arr = np.array([[5,78,34],[6,2,8],[36,9,60]])
>>> pd.DataFrame(arr, columns=['Columna1', 'Columna2', 'Columna3'])
Columna1 Columna2 Columna3
0 5 78 34
1 6 2 8
2 36 9 60
我懷疑你真正想要的是更動(dòng)態(tài)的東西,就像這樣:
def as_data_frame (self):
columns = [f'Columna{i}' for i in range(1, self.columnas+1)]
dataset = pd.DataFrame(self.matriz, columns=columns)
return dataset
在行動(dòng)中:
In [10]: class Analisis:
...:
...: def __init__(self, matriz=None): # watch out for mutable default arguments
...: if matriz is None:
...: self.matriz = np.array([])
...: else:
...: self.matriz = matriz
...: self.filas = matriz.shape[0]
...: self.columnas = matriz.shape[1]
...:
...: def as_data_frame (self):
...: columns = [f'Columna{i}' for i in range(1, self.columnas+1)]
...: dataset = pd.DataFrame(self.matriz, columns=columns)
...: return dataset
...:
...:
In [11]: data = Analisis(np.array([[5,78,34],[6,2,8],[36,9,60]]))
In [12]: data.as_data_frame()
Out[12]:
Columna1 Columna2 Columna3
0 5 78 34
1 6 2 8
2 36 9 60
添加回答
舉報(bào)