问题总结: 两个数据框的索引列属于不同类型,python 不知道如何连接两者。
免责声明:我是python的初学者。
大家好,
我想连接来自两个不同数据提供者 df_1 的 2 个数据帧: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')