Maybe it's just me, but I find the Pandas method of joining on row indexes rather than column names unintuitive and frustratingly complex. You have to set indexes, join, and reset indexes after the join. Seems like that could be done under the hood and avoid the potential for causing related bugs.