0

问题总结: 两个数据框的索引列属于不同类型,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')
4

1 回答 1

1

Concat只会将您的两个数据框相互堆叠。

你想要做的是使用Join

result = df_1.join(df_2)

这将加入df_1索引df_2列。

于 2019-07-17T21:38:52.390 回答