Thanks Jeff, issue opened:
https://github.com/pydata/pandas/issues/10708PR is currently beyond my abilities, but I may take a shot at it eventually, if no one else does first.
Along this same lines, I wonder if there would be any interest in some new pandas command to automatically save memory by safely downcasting columns, and possibly converting strings to categoricals?
Stata, for example, has the command "compress" which just cycles through a dataset changing int32 to int16 and such (no compressing in the sparse or gzip sense). It's a second best way to approach things (vs doing it efficiently to begin with), but it's dead simple to use and doesn't really have any disadvantages.