Проверка индекса на наличие дубликатов в файле Excel
Скорее всего, проблема в том, что вы перебираете неуникальный индекс DataFrame Mapdf
. Убедитесь, что первый столбец в файле Excel, который вы используете для построения Mapdf
, уникален для каждой строки.
Не перебирать строки данных
Однако, вместо того, чтобы пытаться перебирать строки в DataFrame (что почти всегда неправильно), вы можете построить словарь с вызовом dict конструктора , передав ему итерация пар (ключ, значение):
MapDatabase = dict(zip(Mapdf["General Code"], Mapdf["Upload Code"]))
Рассмотрим слияние, а не зацикливание
Еще лучше то, что вы делаете, кажется идеальным кандидатом на DataFrame.merge
.
Похоже, что вы хотите перезаписать значения AccountId
в df
значениями Upload Code
в Mapdf
, если AccountId
имеет совпадение в General Code
в Mapdf
. Это полный рот, но давайте разберемся с этим.
Сначала добавьте Mapdf
к df
по соответствующим столбцам (df["AccountId"]
до Mapdf["General Code"]
):
columns = ["General Code", "Upload Code"] # only because it looks like there are more columns you don't care about
merged = df.merge(Mapdf[columns], how="left", left_on = "AccountId", right_on="General Code")
Поскольку это левое соединение , строки в merged
, где столбец AccountId
не имеет совпадения в Mapdf["General Code"]
, будут иметь пропущенные значения для Upload Code
. Скопируйте не пропущенные значения для перезаписи AccountId
:
matched = merged["Upload Code"].notnull()
merged.loc[matched, "AccountId"] = merged.loc[matched, "Upload Code"]
Затем отбросьте лишние столбцы, если хотите:
merged.drop(["Upload Code", "General Code"], axis="columns", inplace=True)