Wenn Sie alle gebräuchlichen booleschen Masken sowie eine Allzweckmaske anwenden möchten, können Sie Folgendes in eine Datei packen und dann einfach alle Masken wie folgt zuweisen:
pd.DataFrame = apply_masks()
Uso:
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
Es ist zwar etwas umständlich, aber es kann die Dinge ein wenig sauberer machen, wenn Sie ständig Datensätze entsprechend den Filtern zerschneiden und ändern. Es gibt auch einen Allzweckfilter, der von Daniel Velkov oben in der gen_mask-Funktion angepasst wurde und den Sie mit Lambda-Funktionen oder anderweitig verwenden können, falls gewünscht.
Zu speichernde Datei (ich verwende 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