Join 使用具有重叠列名的熊猫连接多个数据帧?

Join 使用具有重叠列名的熊猫连接多个数据帧?,join,merge,pandas,Join,Merge,Pandas,我有多个(2个以上)数据帧要合并。它们都共享相同的值列: 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

我有多个(2个以上)数据帧要合并。它们都共享相同的值列:

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
我了解到join可以处理多个数据帧,但是我得到:

In [432]: data[0].join(data[1:])
...
Exception: Indexes have overlapping values: ['AvgStatisticData']

我已尝试将
rsuffix=[%I”%(I)传递给范围内的I(len(data))]
以加入,但仍然得到相同的错误。我可以通过以列名不重叠的方式构建
数据
列表来解决这个问题,但也许有更好的方法

我会尝试
pandas.merge
使用
后缀=
选项

import pandas as pd
import datetime as dt

df_1 = pd.DataFrame({'x' : [dt.datetime(2012,10,21) + dt.timedelta(n) for n in range(10)], 'y' : range(10)})
df_2 = pd.DataFrame({'x' : [dt.datetime(2012,10,21) + dt.timedelta(n) for n in range(10)], 'y' : range(10)})
df = pd.merge(df_1, df_2, on='x', suffixes=['_1', '_2'])

我很想看看专家们是否有一种更具算法性的方法来合并数据帧列表。

理想的结果是在DateTime索引上加入一行,例如第一行是(如果逗号与列分开):
2012-10-14 14:00:00,39.335996,47.8854712,54.171233…等等
OK,我有点慢:)。我会尝试
pandas.merge
而不是
join
。这应该能让你熬过一个晚上,@KyleBrandt,但我很感兴趣的是专业人士是否有一个更干净的解决方案。问题是当然有超过20个,这是非常手动的。
pandas.concat()
解决方案要好得多——我认为
concat
axis=1
时给出了重复的列名错误,但我有很多东西要学。:)如果索引只是部分重叠怎么办?
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