2016-05-02 21 views
-3

我有一个名为stockData数据框的操作(请参阅下面的。头()):循环通过一个数据帧的列上执行特定的命名列

stockData    BBG.XLON.BTA.S_LAST BBG.XLON.BTA.S_VOLUME BBG.XLON.BTA.S_MKTCAP \ 
date                    
2008-01-04    265.00    38773846    21184.6422 
2008-01-07    264.00    68107684    21104.7001 
2008-01-08    277.75    113809490    22184.2614 
2008-01-09    272.00    47890229    21723.9135 
2008-01-10    276.75    40391750    22102.3023 

      BBG.XLON.BTA.S_VWAP BBG.XLON.BTA.S_CLOSE \ 
date              
2008-01-04    268.4860     NaN 
2008-01-07    263.6428     NaN 
2008-01-08    272.2632     NaN 
2008-01-09    271.4513     NaN 
2008-01-10    275.3315     NaN 

      BBG.XLON.BTA.S_LAST_ADJ BBG.XLON.BTA.S_VOLUME_ADJ \ 
date                
2008-01-04      NaN      NaN 
2008-01-07      NaN      NaN 
2008-01-08      NaN      NaN 
2008-01-09      NaN      NaN 
2008-01-10      NaN      NaN 

      BBG.XLON.BTA.S_EXCHANGE_HOLIDAY BBG.XLON.BTA.S_CORP_ACTION \ 
date                  
2008-01-04        NaN       NaN 
2008-01-07        NaN       NaN 
2008-01-08        NaN       NaN 
2008-01-09        NaN       NaN 
2008-01-10        NaN       NaN 

      BBG.XLON.BTA.S_REPORTING   ...    \ 
date           ...    
2008-01-04      NaN   ...    
2008-01-07      NaN   ...    
2008-01-08      NaN   ...    
2008-01-09      NaN   ...    
2008-01-10      NaN   ...    

      BBG.XLON.VOD.S_LAST_ADJ BBG.XLON.VOD.S_VOLUME_ADJ \ 
date                
2008-01-04      NaN      NaN 
2008-01-07      NaN      NaN 
2008-01-08      NaN      NaN 
2008-01-09      NaN      NaN 
2008-01-10      NaN      NaN 

      BBG.XLON.VOD.S_EXCHANGE_HOLIDAY BBG.XLON.VOD.S_CORP_ACTION \ 
date                  
2008-01-04        NaN       NaN 
2008-01-07        NaN       NaN 
2008-01-08        NaN       NaN 
2008-01-09        NaN       NaN 
2008-01-10        NaN       NaN 

      BBG.XLON.VOD.S_REPORTING BBG.XLON.VOD.S_FX \ 
date              
2008-01-04      NaN    NaN 
2008-01-07      NaN    NaN 
2008-01-08      NaN    NaN 
2008-01-09      NaN    NaN 
2008-01-10      NaN    NaN 

      BBG.XLON.VOD.S_LAST_EUR BBG.XLON.VOD.S_MKTCAP_EUR \ 
date                
2008-01-04      NaN      NaN 
2008-01-07      NaN      NaN 
2008-01-08      NaN      NaN 
2008-01-09      NaN      NaN 
2008-01-10      NaN      NaN 

      BBG.XLON.VOD.S_VWAP_EUR BBG.XLON.VOD.S_CLOSE_EUR 
date               
2008-01-04      NaN      NaN 
2008-01-07      NaN      NaN 
2008-01-08      NaN      NaN 
2008-01-09      NaN      NaN 
2008-01-10      NaN      NaN 

我通过每列试图周期中在列名称末尾有'_LAST'或'_VWAP'。在这些列上,我需要循环查看每个值。我试图在下面的代码中执行此操作,但无法找到stockData数据框的列标识符并将其设置为变量'priceIdentifier'。

def putCorpActions(stockData,corpActionData): 


    for y, row in corpActionData.iterrows(): 

     identifier = row['unique_id'] 
     #corpDate = row['date'] 
     corpDate = y 
     factor_value = row['factor_value'] 
     reference = row['reference'] 
     factor= row['factor'] 



     for columns in stockData: 

       priceIdentifier = row[columns] 
       if priceIdentifier == '*_LAST' or priceIdentifier == '*_VWAP' 
        for z, row in stockData.iterrows(): 
         price = row[] 
         #cycle trough the column doing something 

有人可以请示我如何做到这一点,并通过期望的数据帧列循环。

非常感谢

+0

目前还不清楚你在做什么。你可以说得更详细点吗?你当前的代码是否给出错误信息? – IanS

回答

1
priceIdentifier == '*_LAST' or priceIdentifier == '*_VWAP' 

将无法​​工作。你可以使用“正则表达式”

import re # please import this 


def putCorpActions(stockData,corpActionData): 


    for y, row in corpActionData.iterrows(): 

     identifier = row['unique_id'] 
     #corpDate = row['date'] 
     corpDate = y 
     factor_value = row['factor_value'] 
     reference = row['reference'] 
     factor= row['factor'] 



     for columns in stockData: 

       priceIdentifier = row[columns] 
       rstr = r'.*_(LAST|VWAP)' 
       if re.match(rstr, priceIdentifier) # regular expression matching 
        for z, row in stockData.iterrows(): 
         price = row[] 
         #cycle trough the column doing something 
+0

或'endswith'如果你愿意写两个条件而不是一个... – IanS

+0

谢谢piRSquared。我在行priceIdentifier = row [columns]上得到KeyError:'BBG.XLON.BTA.S_LAST'。任何想法如何解决?谢谢 – Stacey

+0

这就是说你试图使用字符串'BBG.XLON.BTA.S_LAST'作为字典或数据框中的键,但它不存在。我必须有更多的上下文。 – piRSquared

相关问题