Путаница с семантикой ссылок в Python - PullRequest
0 голосов
/ 02 мая 2018

Я пытаюсь удалить пропущенные значения из двух кадров данных 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, я не понимаю. Может кто-нибудь объяснить?

1 Ответ

0 голосов
/ 03 мая 2018

В вашей функции Data1 и Data2 являются параметрами и, следовательно, локальными переменными. Тот факт, что они имеют то же имя, что и ваши глобальные переменные, не имеет значения (за исключением случаев, когда они вызывают некоторую путаницу).

Если вы хотите изменить глобальные переменные, сделайте это так:

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)
...