У меня есть простой вопрос относительно концепции фильтрации кадра данных. Предположим, у меня есть следующий фрейм данных:
df = pd.DataFrame({'AAA': [4, 5, 6, 7],'BBB': [10, 20, 30, 40],'CCC': [100, 50, -30, -50]})
![df](https://i.stack.imgur.com/dVzJ2.png)
Я хотел бы внести в него некоторые изменения в зависимости от условий. Если я запускаю приведенный ниже код, я получаю желаемую строку:
Метод a
df[(df.AAA <= 5) & (df.BBB <= 10)]
![a](https://i.stack.imgur.com/Dyj3o.png)
Я также могу получить эту строку с кодом ниже:
Метод b
df.loc[(df.AAA <= 5) & (df.BBB <= 10)]
![b](https://i.stack.imgur.com/eSw3B.png)
ОбаМетода А и Метода b, в результате чего получился кадр данных панд. Однако, когда я хочу изменить столбец «CCC» на основе этих условий, я получаю сообщение об ошибке «Метод a»:
Метод a
df[(df.AAA <= 5) & (df.BBB <= 10), 'CCC'] = -1
Объекты 'Series' являются изменяемыми, поэтому их нельзя хэшировать
Метод b
df.loc[(df.AAA <= 5) & (df.BBB <= 10), 'CCC'] = -1
![b-1](https://i.stack.imgur.com/NesmX.png)