Я искал быстрый и эффективный способ замены значений в заданном столбце фрейма данных pandas, только если соответствующие индексы принадлежат списку непоследовательных чисел. Скажите non_consecutive_indices_list = [1400, 6571, 14526, 68420, ...] с ок. 30к разных значений.
Я пытался использовать .iloc, но получаю сообщение об ошибке:
df.iloc[non_consecutive_indices_list, 'column'] = New_Value
ValueError: может индексироваться только по местоположению с помощью [целочисленного, целочисленного среза (точка НАЧАЛА ВКЛЮЧЕНА, конечная точка ИСКЛЮЧЕНА), списка целых чисел, логического массива].
В качестве альтернативы я пробовал следующее:
df.iloc[non_consecutive_indices_list].column = New_Value
Но это возвращает копию исходного фрейма данных, поэтому я не могу заменить исходные значения.
Наконец, я попытался использовать цикл for, который работает, но очень неэффективен и требует бесконечно, чтобы заменить около 30k значений:
for i in non_consecutive_indices_list:
df.loc[i, 'column'] = New_Value
Есть идеи, как это можно сделать самым быстрым способом?
Это странно, потому что в вашем случае есть «список целых чисел». Проверьте список, возможно, в нем есть нецелые значения.
Спасибо, Джезраэль! Вы только что сэкономили мне часы на будущие модификации!






А как насчет замены
ilocнаloc, напримерdf.loc[non_consecutive_indices_list, 'column'] = New_Value?