import pandas as pd
class MyClass():
def __init__(self, df):
self.df = df
def edit(self):
self.df = self.df[~self.df['numbers'].isin([2,4,6,8,10])]
df = pd.DataFrame([1,2,3,4,5,6,7,8,9,10], columns=['numbers'])
obj = MyClass(df).edit()
print df
我希望print df
打印在filteration函数之后重新分配的数据帧。在
但是这个stil打印edit
函数修改它之前的数据帧。在
我的外部变量如何仍然跟踪发生在df
内部类中的更改
尝试将代码重写为:
不可变对象不是通过引用传递的(从技术上讲,neither are mutable objects)。你想这么做有什么特别的原因吗?在
你这样做的方式,也就是重新分配,这是不可能的。名字并没有“看到”其他名字的重新分配(想象一下如果他们看到的话会发生什么灾难)。在
在这里,不重新分配
df
的唯一机会是对数据帧进行变异。您当前所做的就是创建一个新对象并重新分配self.var
。类之外的var
并不关心这一点,仍然指向旧对象。在当然,明智的做法是将
df
重新分配给某个函数或方法的返回值,即:相关问题 更多 >
编程相关推荐