我有一个包含称为fcst的预测的df,如下所示:
yhat yhat_lower yhat_upper
ds
2015-08-31 -0.443522 -19.067399 17.801234
2015-09-30 6.794625 -31.472186 46.667981
...
进行此转换后:
fcst2 = fcst["yhat"].to_frame().rename(columns={"yhat":"test1"})
fcst3 = fcst["yhat"].to_frame().rename(columns={"yhat":"test2"})
我想在日期索引上将它们串联起来:
pd.concat([fcst2,fcst3])
但是我收到一个在索引上未对齐的数据框:
test1 test2
ds
2015-08-31 -0.443522 NaN
2015-09-30 6.794625 NaN
... ... ...
2017-05-31 NaN 95.563262
2017-06-30 NaN 85.829916
尽管如此:
(fcst2.index == fcst3.index).any()
返回True。
我的问题是:为什么两个数据帧没有在索引上并置,我该怎么办呢?
我知道join函数,但是由于我打算添加的其他一些数据框中缺少某些日期,因此我相信concat函数可能会更好。
谢谢!
答案 0 :(得分:2)
在concat
设置为axis
的情况下呼叫1
:
pd.concat([df1, df2], axis=1)
答案 1 :(得分:1)
它不起作用,因为pd.concat
具有参数axis=0
的默认值。因此,您可以按照Dominique Paul的建议用axis=1
调用该函数,也可以改用join
函数。举一个例子:
# data to create the dataframes with
data_1 = [1,2,3,4,5]
index_1 = ['a','b','c','d','e']
data_2 = [6,7,8,9,10]
index_2 = ['b','d','e','a','c']
# create dataframes
df_1 = pd.DataFrame({'data_1':data_1, 'new_index':index_1})
df_2 = pd.DataFrame({'data_2':data_2, 'new_index':index_2})
# setting new index to test unaligned indexes
df_1.set_index('new_index', inplace=True, drop=True)
df_2.set_index('new_index', inplace=True, drop=True)
# join operation is performed on indexes
df_1.join(df_2)