我希望将一些具有不同日期的时间序列组合到一个数据帧中。
每个时间序列'列名称为date
和px
我创建了一个日期索引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
答案 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()