BUG: Various inconsistencies in DataFrame __getitem__ and __setitem__ behavior (minor performance tweak)