I would like to slice a DataFrame with a Boolean index obtaining a copy, and then do stuff on that copy independently of the original DataFrame.
Judging from this a
You need copy with boolean indexing, new DataFrame constructor is not necessary:
DataFrame
d2 = d1[d1.a > 1].copy()
Explanation of warning:
If you modify values in d2 later you will find that the modifications do not propagate back to the original data (d1), and that Pandas does warning.
d2
d1