2016-01-29 20 views
-1

我制作了这个代码,最后列出了2个数据帧的列表和一个内容错误的数据帧。将2个数据帧的列表合并到一个具有2列的df中

的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 

但我需要的是实际的日常exrates,而不是仅仅为货币符号...

像这样的事情

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') 

回答

0

删除这部分如果你不想符号列:

# add a symbol column 
r[xrt] = xrt 

又通axis='columns'concat()如果你想沿着列轴Concat的:

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

如果我理解正确的话,你,你只需要添加axis=1到您的通话concat

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

这是否给你什么你是后?