Python 类增加了基础数据,但不应该这样做
我已经创建了一个类来扩展底层数据,但并不打算这样做。你能解释一下这种行为是从哪里来的以及如何预防吗 这里是MWE:MyClass接受一个数据帧,我想在前面添加一列数据帧,并将数据设置为属性。此更改仅在类中发生Python 类增加了基础数据,但不应该这样做,python,dataframe,class,oop,Python,Dataframe,Class,Oop,我已经创建了一个类来扩展底层数据,但并不打算这样做。你能解释一下这种行为是从哪里来的以及如何预防吗 这里是MWE:MyClass接受一个数据帧,我想在前面添加一列数据帧,并将数据设置为属性。此更改仅在类中发生 class MyClass: def __init__(self, rhs): # Declare data self.rhs = MyClass._add_intercept(rhs) @staticmethod def _ad
class MyClass:
def __init__(self, rhs):
# Declare data
self.rhs = MyClass._add_intercept(rhs)
@staticmethod
def _add_intercept(rhs):
# Add ones to the front
idxname = rhs.index.name
rhs['A'] = 1
rhs = rhs.reset_index().set_index('A').reset_index().set_index(idxname)
return rhs
当我创建一个只包含零的数据帧并将其传递给类并初始化该类时
rhs = pd.DataFrame(np.zeros((4,2)), columns=['B','C'])
rhs.index.name = 'position'
instance = MyClass(rhs)
print(rhs)
数据框现在包含一列不应该存在的1
B C A
position
0 0.0 0.0 1
1 0.0 0.0 1
2 0.0 0.0 1
3 0.0 0.0 1
那么,这背后是什么呢?传递给类的对象仍然指向原始数据帧。在传递给类之前,或者在