【问题标题】:Merging list of 2 dataframes into one df with 2 columns将 2 个数据帧的列表合并到一个 df 中,包含 2 列
【发布时间】:2016-05-07 09:55:57
【问题描述】:

我制作的这段代码最终得到了一个包含 2 个数据框的列表,以及一个包含错误内容的数据框。

创建的 DF 如下所示:

DATE    DEXDNUS DEXUSEU
2016-01-20  DEXDNUS nan
2016-01-21  DEXDNUS nan 
2016-01-22  DEXDNUS nan
2014-12-04  nan DEXUSEU
2014-12-05  nan DEXUSEU
2014-12-08  nan DEXUSEU

但我需要的是实际的每日汇率,而不仅仅是货币符号...

类似的东西

DATE    DEXDNUS DEXUSEU
2014-12-04  6.78    1.24
2014-12-05  6.86    1.23
2014-12-08  6.81    1.27

我该怎么做?

import pandas as pd
import pandas.io.data as web
import datetime

xratelist = ['DEXDNUS', 'DEXUSEU']
xrts = []

def xRateList_pd(xratelist, modus='trading',start=datetime.datetime(2000,1,1),end=pd.Timestamp.utcnow()):    

    years = 1.2
    days = int(252 * years)  # ant. arb. dage pr år = 252

    if modus == 'trading':
        end     = pd.Timestamp.utcnow()
        start   = end - days * pd.tseries.offsets.BDay()

    print('Fetching xratelist from Fred: ', xratelist)
    for xrt in xratelist:
        r = web.DataReader(xrt, 'fred',
                       start = start, end = end)
        # add a symbol column
        r[xrt] = xrt
        xrts.append(r)
    # concatenate all the dfs into one
    df_xrates = pd.concat(xrts)

    return df_xrates

if __name__ == '__main__':
    df_xrates = xRateList_pd(xratelist, modus='trading') 

【问题讨论】:

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


    【解决方案1】:

    如果您不需要符号列,请删除此部分:

    # add a symbol column
    r[xrt] = xrt
    

    如果您想沿列轴连接,请将axis='columns' 传递给concat()

    df_xrates = pd.concat(xrts, axis='columns')
    

    【讨论】:

      【解决方案2】:

      如果我对您的理解正确,您只需将axis=1 添加到您的concat 通话中:

      df_xrates = pd.concat(xrts,axis=1)
      

      这是否给了你你所追求的东西?

      【讨论】:

        猜你喜欢
        • 2017-03-25
        • 2021-06-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-08-04
        • 2020-10-12
        • 2021-10-06
        相关资源
        最近更新 更多