Si vous souhaitez appliquer l'ensemble de la commune boolean masques ainsi que d'un usage général, masque, vous pouvez chuck suivantes dans un fichier et ensuite il suffit d'attribuer tous comme suit:
pd.DataFrame = apply_masks()
Utilisation:
A = pd.DataFrame(np.random.randn(4, 4), columns=["A", "B", "C", "D"])
A.le_mask("A", 0.7).ge_mask("B", 0.2)... (May be repeated as necessary
C'est un peu hacky mais il peut rendre les choses un peu plus propre si vous êtes en permanence la coupe et l'évolution des ensembles de données selon des filtres.
Il y a également un objectif général de filtre adapté de Daniel Velkov ci-dessus dans le gen_mask fonction que vous pouvez utiliser avec les lambda fonctions ou autrement si vous le souhaitez.
Fichier pour être sauvé (j'utilise masks.py):
import pandas as pd
def eq_mask(df, key, value):
return df[df[key] == value]
def ge_mask(df, key, value):
return df[df[key] >= value]
def gt_mask(df, key, value):
return df[df[key] > value]
def le_mask(df, key, value):
return df[df[key] <= value]
def lt_mask(df, key, value):
return df[df[key] < value]
def ne_mask(df, key, value):
return df[df[key] != value]
def gen_mask(df, f):
return df[f(df)]
def apply_masks():
pd.DataFrame.eq_mask = eq_mask
pd.DataFrame.ge_mask = ge_mask
pd.DataFrame.gt_mask = gt_mask
pd.DataFrame.le_mask = le_mask
pd.DataFrame.lt_mask = lt_mask
pd.DataFrame.ne_mask = ne_mask
pd.DataFrame.gen_mask = gen_mask
return pd.DataFrame
if __name__ == '__main__':
pass