У меня есть фрейм данных с именем df_override, который содержит столбцы «name», «Field» и «New Value».Цель этого цикла - заменить все совпадения «name» в столбце «Поле» df-файла в «New Value».Оператор if должен видеть, является ли оно целым числом, тогда вместо этого он будет соответствовать столбцу id.
Этот цикл работает нормально, но с большим фреймом данных он становится невероятно медленным.У меня есть несколько других циклов for, которые запускаются так же позже в этой функции.Мне интересно, есть ли другой способ выполнить эту функцию, которая оптимизирована для времени выполнения?
Спасибо.
for index, row in df_override.iterrows():
if(not str(row["name"]).isdigit()):
df.loc[df["name"] == row["name"], row["Field"]] = row["New Value"]
else:
df.loc[df["id"] == row["name"], row["Field"]] = row["New Value"]
df_override
"name" "Field" "New Value"
apple color red
100 is_number True
df
"name" "id" "color" "is_number"
apple 300 blue False
apple 200 yellow False
banana 100 green False
df (after processing)
"name" "id" "color" "is_number"
apple 300 red False
apple 200 red False
banana 100 green True