Для l oop с определенной функцией - PullRequest
0 голосов
/ 24 марта 2020

Хорошо, у меня возникли проблемы с настройкой для l oop использования моей функции Sector_Subset. Я хочу, чтобы он прошел через oop и создал 11 фреймов данных и назвал их в соответствии с тем, какой это gsector. У меня есть l oop, но он, конечно, создает только последний кадр данных. Нужен какой-то способ, чтобы иметь возможность переименовывать его в цикле, чтобы он создавал каждый отдельный фрейм данных.

Energy = 10
Materials = 15 
Industrials = 20
Consumer_Discretionary = 25
Consumer_Staples = 30
Health_Care = 35
Financials = 40
Information_Technology = 45
Communication_Services = 50
Utilities = 55
Real_Estate = 60

GICS_Sectors = [Energy,Materials,Industrials,Consumer_Discretionary,Consumer_Staples,Health_Care,Financials,Information_Technology,Communication_Services,Utilities,Real_Estate]

def Sector_Subset(dataframe,GICS_Sectors):
    """
    This function takes a dataframe and will pull sector specific data 
    to create a new dataframe for each eactor

    Parameters:
        dataframe = Portfolio
        GICS_Sectors = Each 11 sectors

    Notes:
        We want to do this so we can easily graph momentum separately to compare sectors
    """
    dataframe[['datadate','GVKEY','trt1m','gsector','Start_Date','Rank_Percentile','Buy_Date','Sell_Date']]
    return [dataframe.groupby('gsector').get_group(d) for d in GICS_Sectors]


# Create a for loop to get each dataframe without having to retype 11 times
# You want the loop to select the sector and name the new portfolio with that
# sector name and turn it from a list back to a dataframe


for Value in GICS_Sectors:
    Value_Portfolio = Sector_Subset(Portfolio,[Value])
    Value_Portfolio = Value_Portfolio[0]
...