Почему происходит ошибка при замене значения в DataFrame с использованием pandas, несмотря на то, что значение все равно меняется?

Как можно заменить значение в определенном столбце по индексу в датафрейме, чтобы избежать ошибки, которую выдаёт Pycharm? Вот часть вашего кода, вызывающая ошибку: <br/> `frame['price'][2] = 3`
  • 24 февраля 2024 г. 5:28
Ответы на вопрос 2
Ошибка возникает из-за того, что при выполнении `frame['price'][2] = 3` происходит двойное обращение к DataFrame, что не рекомендуется. Вместо этого нужно использовать метод `loc` или `iloc` для присвоения нового значения.

Вот как можно заменить значение в определенном столбце по индексу без ошибок:

```python
frame.loc[2, 'price'] = 3
```

Этот код присвоит новое значение 3 в столбец 'price' на строке с индексом 2 в DataFrame `frame`. Ошибки больше не должны возникнуть.
1. Это не ошибка, а предупреждение которому сто лет в обед, более того в зависимости от твоей версии pandas, ты можешь видеть не одно а сразу два предупреждения. В pandas давно уже целый раздел документации посвящен этому copy_on_write 

2. Детали про copy_on_write прочтешь в документации, там все расписано не хочу повторяться. Собираешься работать с pandas, ты должен знать что это такое.

3. Правильный способ безопасно осуществить операцию, которую ты хочешь (что бы не было предупреждений и работало, как ты ожидаешь.
pd.options.mode.copy_on_write = True
info = {'color': ['blue', 'green', 'yellow', 'red', 'white'],
'object': ['ball', 'pen', 'pencil', 'paper', 'mug'],
'price': [1.2, 1.0, 0.6, 0.9, 1.7]}
frame = pd.DataFrame(info)
frame.loc[2,'price'] = 100 
print(frame)

Ну и обнови на всякий случай pandas по скольку copy_on_write будет по умолчанию установлен в True в будущих версиях.
Похожие вопросы