Как установить значения среза pandas данных, где строки выбираются логическим выражением, а столбцы - позицией?
До сих пор я делал это следующим образом :
>>> vals = [5,7]
>>> df = pd.DataFrame({'a':[1,2,3,4], 'b':[5,5,7,7]})
>>> df
a b
0 1 5
1 2 5
2 3 7
3 4 7
>>> df.iloc[:,1][df.iloc[:,1] == vals[0]] = 0
>>> df
a b
0 1 0
1 2 0
2 3 7
3 4 7
Это работает, как и ожидалось, на этом небольшом примере, но дает мне следующее предупреждение на моем реальном фрейме данных:
SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame
Каков рекомендуемый способ достижения этого?