【问题标题】:Concatenated data from pandas_datareader来自 pandas_datareader 的连接数据
【发布时间】:2019-12-02 14:07:18
【问题描述】:

我正在尝试创建一个数据框,其中包含来自 2 个不同数据框的列。

import pandas as pd
import numpy as np
from statsmodels import api as sm
import pandas_datareader.data as web
import datetime
start = datetime.datetime(2016,12,2)
end = datetime.datetime.today()
df = web.get_data_yahoo(['F'], start, end)
df1 = web.get_data_yahoo(['^GSPC'], start, end)
df3 = pd.concat([df['Adj Close'], df1['Adj Close']])

有了这个我想得到df3 2 列包含[Adj Close] 的数据。我得到的是:

    F   ^GSPC
Date        
2016-12-01  10.297861   NaN
2016-12-02  10.140451   NaN
2016-12-05  10.306145   NaN
2016-12-06  10.405562   NaN
2016-12-07  10.819797   NaN
... ... ...
2019-11-22  NaN 3110.290039
2019-11-25  NaN 3133.639893
2019-11-26  NaN 3140.520020
2019-11-27  NaN 3153.629883
2019-11-29  NaN 3140.979980
1508 rows × 2 columns

我需要做什么来摆脱 NaN 值,为什么会出现?

【问题讨论】:

    标签: python-3.x pandas pandas-datareader


    【解决方案1】:

    concat中的列添加参数axis=1

    df3 = pd.concat([df['Adj Close'], df1['Adj Close']], axis=1)
    

    但我认为您的解决方案应该通过将传递列表简化为get_data_yahoo

    df3 = web.get_data_yahoo(['F', '^GSPC'], start, end)
    

    【讨论】:

    • 成功了!!!我会认为这是默认行为为什么需要指定“沿列”。我可以看看是否有人需要做axis =0
    • @newcoder - 默认行为是 axis=0 按索引连接
    • df3 = web.get_data_yahoo(['F', '^GSPC'], start, end) 我没有按照您的建议使用,因为我将在 df 上使用 for 循环,然后将其与 df2 连接
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-03
    • 2011-06-21
    相关资源
    最近更新 更多