Let say I have a data frame with numerical values, like below
df = pd.DataFrame(np.random.randn(10, 4), columns=list('ABCD'))
    A            B           C           D
0   1.148867    -2.332343   -0.168327   -0.001228
1   -0.575731   0.905931    -0.722896   -0.316320
2   1.487290    0.797067    0.485837    -0.111441
3   -1.176389   -0.734691   -0.928221   -0.163423
4   1.866434    1.390055    -0.686367   -1.608775
5   -0.148878   0.459058    2.147155    2.256669
6   -0.413589   0.261600    1.565556    -1.587567
7   -0.924501   -0.712473   -0.422530   -2.729229
8   -0.309152   -0.094097   -1.216532   -2.607139
9   0.069348    0.288499    0.801205    0.162862
and then I create a boolean data frame
dfBool = df > 1
    A       B       C       D
0   True    False   False   False
1   False   False   False   False
2   True    False   False   False
3   False   False   False   False
4   True    True    False   False
5   False   False   True    True
6   False   False   True    False
7   False   False   False   False
8   False   False   False   False
9   False   False   False   False
Now I would like to use the second data frame to replace all values, which are bigger than one, with zeros in the first data frame. So, I just did the following:
df[dfBool] = 0
It works, but I am getting a warning.
<ipython-input-246-322bdc88170a>:1: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead
See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  dataTest[outliers] = 0
c:\users\...\programs\python\python38\lib\site-packages\pandas\core\frame.py:2986: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame
See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  self._where(-key, value, inplace=True)
What am I missing here?
 
    