在数据帧的列之间循环,对指定的列执行操作

2024-04-30 04:30:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个名为stockData的数据帧(请参见下面的.head()):

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 

我正在尝试遍历列名末尾有'\u LAST'或'\u VWAP'的每一列。在这些列上,我需要循环遍历每个值。我尝试在下面的代码中执行此操作,但找不到stockData dataframe的列标识符并将其设置为变量“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

请有人告诉我如何做到这一点,并通过所需的数据帧列请周期。你知道吗

非常感谢


Tags: datenaneurrowlastfactorvolumevod
1条回答
网友
1楼 · 发布于 2024-04-30 04:30:36
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

相关问题 更多 >