Python 中的引用语义混乱
Reference semantics confusion in Python
我正在尝试从两个 Pandas 数据帧中删除缺失值:
Data1 = pd.read_csv(r"C:\Users\Zihao\Desktop\New\OBSTET.csv")
Data2 = pd.read_csv(r"C:\Users\Zihao\Desktop\New\PRODUCTOS.csv", index_col = 0)
def DropNan(Data1, Data2):
Data1 = Data1.dropna()
Data2 = Data2.dropna()
当我调用该方法时,它不起作用(它不会删除缺失值)。我想知道是什么导致了这个问题?
我的猜测是它与Python中的引用语义有关我不明白。有人可以解释一下吗?
在您的函数中,Data1
和 Data2
是参数,因此是局部变量。它们恰好与您的全局变量同名这一事实无关紧要(除非引起一些额外的混淆)。
如果你想改变全局变量,这样做:
def DropNan():
global Data1, Data2
Data1 = Data1.dropna()
Data2 = Data2.dropna()
DropNan()
或者,如果你想把这两个值作为参数,你几乎肯定想要return两个值:
def DropNan(d1, d2):
return d1.dropna(), d2.dropna()
Data1, Data2 = DropNan(Data1, Data2)
我正在尝试从两个 Pandas 数据帧中删除缺失值:
Data1 = pd.read_csv(r"C:\Users\Zihao\Desktop\New\OBSTET.csv")
Data2 = pd.read_csv(r"C:\Users\Zihao\Desktop\New\PRODUCTOS.csv", index_col = 0)
def DropNan(Data1, Data2):
Data1 = Data1.dropna()
Data2 = Data2.dropna()
当我调用该方法时,它不起作用(它不会删除缺失值)。我想知道是什么导致了这个问题?
我的猜测是它与Python中的引用语义有关我不明白。有人可以解释一下吗?
在您的函数中,Data1
和 Data2
是参数,因此是局部变量。它们恰好与您的全局变量同名这一事实无关紧要(除非引起一些额外的混淆)。
如果你想改变全局变量,这样做:
def DropNan():
global Data1, Data2
Data1 = Data1.dropna()
Data2 = Data2.dropna()
DropNan()
或者,如果你想把这两个值作为参数,你几乎肯定想要return两个值:
def DropNan(d1, d2):
return d1.dropna(), d2.dropna()
Data1, Data2 = DropNan(Data1, Data2)