Make DataFrame arithmetic ops with 2D arrays behave like numpy analogues by jbrockmendel · Pull Request #23000 · pandas-dev/pandas (original) (raw)
For performance, if the answer is that it does make copies, then yes. At least in the sufficiently-new numpy case, we're passing a view in left._constructor.
a = np.arange(3)
b = a.reshape(3, 1)
c = np.broadcast_to(b, (3, 2))
d = c.copy()
df = pd.DataFrame(c)
df2 = pd.DataFrame(d)
>>> df.values.base is a # <-- the concern is that this comes back False
True
>>> df2.values.base is d
True
In this example its OK. I left the comment to do a more thorough check. Are you confident this is always OK?