Python中的引用语义混淆

问题描述 投票:0回答:1

我试图从两个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中的参考语义有关我不明白。有人能解释一下吗

python pandas pass-by-reference
1个回答
1
投票

在你的函数中,Data1Data2是参数,因此是局部变量。事实上它们碰巧与全局变量具有相同的名称是无关紧要的(除了引起一些额外的混淆)。

如果要更改全局变量,请执行以下操作:

def DropNan():
    global Data1, Data2
    Data1 = Data1.dropna()
    Data2 = Data2.dropna()

DropNan()

或者,如果您想将这两个值作为参数,您几乎肯定想要返回两个值:

def DropNan(d1, d2):
    return d1.dropna(), d2.dropna()

Data1, Data2 = DropNan(Data1, Data2)
© www.soinside.com 2019 - 2024. All rights reserved.