@jtratner My mistake. I was confused by some things, but then I realised why are they there. So just forget the last comment. :) The `compat` is not the problem. The problem is that the `StringIO` is he same as `BytesIO` for 2.X, but the `six` does the same thing, so there is no clear distinction between a `unicode` or `bytes` stream. I would always use `io.StringIO` and `io.BytesIO` everywhere. But that would be a **HUGE** change in the whole `pandas` library and a lot of work...