Работа с dataframe df:
ID | Category | Price
23 A 101
34 B 50
24 A 55
Я хочу добавить флаг для всех категорий А и цен меньше и равных 100.
Это мой код:
df['Flag'][(df['Price'] <=100)&(df['Category']=='A')] = 'X'
Я получаю такую ошибку:
SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame
Когда я пытаюсь отфильтровать флаг, я получаю такую ошибку:
df.loc[df['Flag'] == 'X']
TypeError: invalid type comparison
Ожидаемый результат:
ID | Category | Price Flag
23 A 101
34 B 50
24 A 55 X






Используйте loc
df.loc[(df['Price'] <=100)&(df['Category']=='A'), "Flag"] = 'X'
Теперь я получаю эту ошибку AttributeError: объект 'str' не имеет атрибута 'loc'
вы должны применить loc к объекту фрейма данных. Вы уверены, что делаете df.loc?
Вы можете использовать map():
>>> df['flag'] = ((df['Category'] == 'A') & (df['Price'] <= 100)).map({True: 'X', False: ''})
>>> df
ID Category Price flag
0 23 A 101
1 34 B 50
2 24 A 55 X
Возможный дубликат Как бороться с SettingWithCopyWarning в Pandas?