import pandas as pd class Selector: def select(self, codes: [str], df: pd.DataFrame) -> [str]: return codes class Score: def score(self, codes: [str], df: pd.DataFrame) -> [(str, int)]: return list(map(lambda code: (code, 0), codes)) class PeriodSelector(Selector): def __init__(self, period: int = 5): self.__period = period def select(self, codes: [str], df: pd.DataFrame) -> [str]: size_df = df.groupby("code").size() return list(filter(lambda code: size_df[code] > self.__period, codes))