在Python中组合具有不同日期范围的多个列

在Python中组合具有不同日期范围的多个列,python,dataframe,merge,concatenation,Python,Dataframe,Merge,Concatenation,我有多个具有不同日期范围(开始日期不同)的股票价格数据框作为指数。下面是三个例子 Dataframe #1: Date 12/15/1980 0.3936 12/16/1980 0.3648 12/17/1980 0.3738 12/18/1980 0.3846 12/19/1980 0.4081 ... ... 09/21/2018 151.2600 Dataframe #2: 10/26/1993

我有多个具有不同日期范围(开始日期不同)的股票价格数据框作为指数。下面是三个例子

Dataframe #1:
Date
12/15/1980      0.3936
12/16/1980      0.3648
12/17/1980      0.3738
12/18/1980      0.3846
12/19/1980      0.4081
...             ... 
09/21/2018      151.2600

Dataframe #2:
10/26/1993     0.7862
10/28/1993     0.7483
10/29/1993     0.7578
11/01/1993     0.7956
11/02/1993     0.7956
...            ...
09/21/2018     51.2000

Dataframe #3:
Date
10/26/1996      0.7862
10/28/1996      0.7483
10/29/1996      0.7578
11/01/1996      0.7956
11/02/1996      0.7956
...            ...
09/21/2018      36.5032
我想将这些数据帧组合成一个以日期为索引的表。对于没有特定日期数据的股票,“单元格”将为空

我有几百个这样的数据帧。如果有人能帮我解决这个问题,我将不胜感激

使用:

dflist = [df1, df2, df3 ...]

for df in dflist:
    df.index = pd.to_datetime(df.index,errors ='coerce')

df_all = pd.concat([[df1, df2, df3 ..]],axis=1)
另一种解决方案是在
concat
之前使用
列表理解
创建
DatetimeIndex
——然后输出
DatetimeIndex
也被排序:

dfs = [df1, df2, df3]
dfs1 = [x.set_index(pd.to_datetime(x.index, format='%m/%d/%Y')) for x in dfs]
df = pd.concat(dfs1, axis=1)
print (df)
                   a        b        c
1980-12-15    0.3936      NaN      NaN
1980-12-16    0.3648      NaN      NaN
1980-12-17    0.3738      NaN      NaN
1980-12-18    0.3846      NaN      NaN
1980-12-19    0.4081      NaN      NaN
1993-10-26       NaN   0.7862      NaN
1993-10-28       NaN   0.7483      NaN
1993-10-29       NaN   0.7578      NaN
1993-11-01       NaN   0.7956      NaN
1993-11-02       NaN   0.7956      NaN
1996-10-26       NaN      NaN   0.7862
1996-10-28       NaN      NaN   0.7483
1996-10-29       NaN      NaN   0.7578
1996-11-01       NaN      NaN   0.7956
1996-11-02       NaN      NaN   0.7956
2018-09-21  151.2600  51.2000  36.5032

@helloworldlevel-谢谢,很高兴能帮忙。如果适合你,别忘了接受答案!:)
dfs = [df1, df2, df3]
dfs1 = [x.set_index(pd.to_datetime(x.index, format='%m/%d/%Y')) for x in dfs]
df = pd.concat(dfs1, axis=1)
print (df)
                   a        b        c
1980-12-15    0.3936      NaN      NaN
1980-12-16    0.3648      NaN      NaN
1980-12-17    0.3738      NaN      NaN
1980-12-18    0.3846      NaN      NaN
1980-12-19    0.4081      NaN      NaN
1993-10-26       NaN   0.7862      NaN
1993-10-28       NaN   0.7483      NaN
1993-10-29       NaN   0.7578      NaN
1993-11-01       NaN   0.7956      NaN
1993-11-02       NaN   0.7956      NaN
1996-10-26       NaN      NaN   0.7862
1996-10-28       NaN      NaN   0.7483
1996-10-29       NaN      NaN   0.7578
1996-11-01       NaN      NaN   0.7956
1996-11-02       NaN      NaN   0.7956
2018-09-21  151.2600  51.2000  36.5032