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中的引用语义有关我不明白。有人可以解释一下吗?

在您的函数中,Data1Data2 是参数,因此是局部变量。它们恰好与您的全局变量同名这一事实无关紧要(除非引起一些额外的混淆)。

如果你想改变全局变量,这样做:

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)