Joining Multiple Dataframes with Pandas with overlapping Column Names?

join, merge, pandas

Solution

In [65]: pd.concat(data, axis=1)
Out[65]:
                     AvgStatisticData  AvgStatisticData  AvgStatisticData  AvgStatisticData
2012-10-14 14:00:00         39.335996         47.854712         54.171233         65.813114
2012-10-14 15:00:00         40.210110         55.041512         48.718387         71.397868
2012-10-14 16:00:00         48.282816         55.488026         59.978616         76.213973
2012-10-14 17:00:00         40.593039         51.688483         50.984514         72.729002
2012-10-14 18:00:00         40.952014         57.916672         54.924745         73.196415

Problem

I have multiple (more than 2) dataframes I would like to merge. They all share the same value column: ``` In [431]: [x.head() for x in data] Out[431]: [ AvgStatisticData DateTime 2012-10-14 14:00:00 39.335996 2012-10-14 15:00:00 40.210110 2012-10-14 16:00:00 48.282816 2012-10-14 17:00:00 40.593039 2012-10-14 18:00:00 40.952014, AvgStatisticData DateTime 2012-10-14 14:00:00 47.854712 2012-10-14 15:00:00 55.041512 2012-10-14 16:00:00 55.488026 2012-10-14 17:00:00 51.688483 2012-10-14 18:00:00 57.916672, AvgStatisticData DateTime 2012-10-14 14:00:00 54.171233 2012-10-14 15:00:00 48.718387 2012-10-14 16:00:00 59.978616 2012-10-14 17:00:00 50.984514 2012-10-14 18:00:00 54.924745, AvgStatisticData DateTime 2012-10-14 14:00:00 65.813114 2012-10-14 15:00:00 71.397868 2012-10-14 16:00:00 76.213973 2012-10-14 17:00:00 72.729002 2012-10-14 18:00:00 73.196415, ....etc ``` I read that join can handle multiple dataframes, however I get: ``` In [432]: data[0].join(data[1:]) ... Exception: Indexes have overlapping values: ['AvgStatisticData'] ``` I have tried passing `rsuffix=["%i" % (i) for i in range(len(data))]` to join and still get the same error. I can workaround this by building my `data` list in a way where the column names don't overlap, but maybe there is a better way?

Original source