问题摘要: 两个数据框的索引列具有不同的类型,而python不知道如何将两者串联。
免责声明: 我是python的初学者。
嗨,
我想连接来自两个不同数据提供者的2个数据帧 df_1:Alpha Vantage和 df_2:Quandl。
df_1看起来像:
PG ^GSPC
2000-01-03 32.0022 1455.22
2000-01-04 31.3753 1399.42
2000-01-05 31.1066 1402.11
2000-01-06 32.2112 1403.45
2000-01-07 34.7785 1441.47
[...]
2019-07-11 114.38 2999.9099
2019-07-12 114.99 3013.7700
2019-07-15 115.48 3014.3000
2019-07-16 115.89 3004.0400
2019-07-17 115.74 2992.0200
df_2看起来像:
10 YR
Date
1990-01-02 7.94
1990-01-03 7.99
1990-01-04 7.98
1990-01-05 7.99
1990-01-08 8.02
[...]
2019-07-10 2.07
2019-07-11 2.13
2019-07-12 2.12
2019-07-15 2.09
2019-07-16 2.13
但是,当我使用此连接时
xyz = pd.concat((df_1 , df_2 ), axis=1, sort = False)
我得到一个看起来像这样的数据框:
PG ^GSPC 10 YR
2000-01-03 32.0022 1455.2200 NaN
2000-01-04 31.3753 1399.4200 NaN
2000-01-05 31.1066 1402.1100 NaN
2000-01-06 32.2112 1403.4500 NaN
2000-01-07 34.7785 1441.4700 NaN
2000-01-10 34.5994 1457.6000 NaN
2000-01-11 35.1666 1438.5601 NaN
2000-01-12 34.9278 1432.2500 NaN
2000-01-13 34.3307 1449.6801 NaN
2000-01-14 34.9278 1465.1500 NaN
2000-01-18 34.8979 1455.1400 NaN
[...]
2019-07-05 00:00:00 NaN NaN 2.04
2019-07-08 00:00:00 NaN NaN 2.05
2019-07-09 00:00:00 NaN NaN 2.07
2019-07-10 00:00:00 NaN NaN 2.07
2019-07-11 00:00:00 NaN NaN 2.13
2019-07-12 00:00:00 NaN NaN 2.12
2019-07-15 00:00:00 NaN NaN 2.09
2019-07-16 00:00:00 NaN NaN 2.13
因此,这两个数据框的索引列具有不同的类型,并且python不知道如何将两者串联,而是将它们彼此堆叠在一起。我的问题是,如何更改索引列的类型,以便python可以正确连接?
注意:
i)我先前将两个数据帧中的df_1串联在一起,没有问题:
df_1 = pd.concat([stock['5. adjusted close'], indx['5. adjusted close']], axis = 1, sort = False)
df_1 .columns = [userin_stock, userin_indx] # Renaming columns
df_1 = df_1 [np.isfinite(df_1 [userin_indx])] # Checking for NaN values and dropping those rows
ii)我使用此命令将df_2从系列转换为数据框
df_2 = pd.DataFrame([df_2 ])
<class 'pandas.core.series.Series'>
<class 'pandas.core.frame.DataFrame'>
iii)df_2已更改 以前,我尝试将日期时间频率从T更改为D,我认为可以解决此问题。但是,一旦我建立联系,便会重新出现00:00:00。
df_2= df_2.resample('D', how='mean')