数组长度与索引长度不匹配

时间:2017-09-13 18:33:54

标签: pandas date time-series

我希望将一些具有不同日期的时间序列组合到一个数据帧中。

每个时间序列'列名称为datepx

我创建了一个日期索引dates,并试图通过以下方式合并所有时间序列:

dates = pd.date_range('01/01/2017', periods=12, freq='M')

df = pd.DataFrame({
   'date': dates,
   'a': df2['px'],
   'b': df3['px']
   .
   .
   etc
})

预期产出:

      date          a           b           c           d           e
2017-01-31    -0.4579         nan           .           .           .
2017-02-28     0.5787         nan           .           .           .
2017-03-31    -2.2319     -1.0244         etc         etc         etc
2017-04-30    -2.0713     -2.1069
2017-05-31        nan      2.0158
2017-06-30        nan      1.0541
2017-07-31        nan      1.8901
2017-08-31        nan         nan
2017-09-30        nan         nan
.
.
etc

2 个答案:

答案 0 :(得分:2)

数据帧的所有列必须具有相同的长度,因此您无法从不同长度的系列创建数据帧。您可以在参数how =' outer'中使用多个合并,就像这样。

df1.merge(df2, on = 'date', how = 'outer').merge(df3, on = 'date', how = 'outer')

由于您没有提供单个系列的代码段,因此很难尝试代码并在此处显示输出。

答案 1 :(得分:2)

IIUC:

dfs = [df1,df2,df3]
pd.concat([df.set_index('date') for df in dfs], axis=1).reset_index()