Pandas 数组长度与索引长度不匹配
我希望将几个具有不同日期的时间序列组合到一个数据帧中 每个时间序列的列名都是date和px 我创建了一个日期索引日期,并尝试通过以下操作组合所有时间序列: 日期=pd.日期范围为'01/01/2017',期间=12,频率=M' 预期产出:Pandas 数组长度与索引长度不匹配,pandas,date,time-series,Pandas,Date,Time Series,我希望将几个具有不同日期的时间序列组合到一个数据帧中 每个时间序列的列名都是date和px 我创建了一个日期索引日期,并尝试通过以下操作组合所有时间序列: 日期=pd.日期范围为'01/01/2017',期间=12,频率=M' 预期产出: date a b c d e 2017-01-31 -0.4579 nan . .
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
数据帧的所有列必须具有相同的长度,因此不能从长度不同的序列中创建数据帧。在您的案例中,可以使用多个merge,参数how='outer',类似于这样
df1.merge(df2, on = 'date', how = 'outer').merge(df3, on = 'date', how = 'outer')
由于您没有提供单个系列的片段,因此很难在此处尝试代码并显示输出。IIUC:
dfs = [df1,df2,df3]
pd.concat([df.set_index('date') for df in dfs], axis=1).reset_index()
这太棒了!是否最好仅使用df.columns重命名列?@J.D.Marlin,这取决于。。。你想如何命名它们?可能多达30个左右。每个时间序列都有日期、px、px_2、px_3等,当将它们连接在一起时,我希望它们作为a、'a_2、a_3、b、b_2、b_3等。您可以发布打印连接的列的输出吗?
dfs = [df1,df2,df3]
pd.concat([df.set_index('date') for df in dfs], axis=1).reset_index()