Gibt es in Pandas einzelne Funktionen, um die Äquivalente von SUMIF auszuführen , die über eine bestimmte Bedingung summieren , und COUNTIF , das Werte bestimmter Bedingungen aus Excel zählt?
Ich weiß, dass es viele Mehrschrittfunktionen gibt, für die verwendet werden kann
zum Beispiel für sumif
ich kann (df.map(lambda x: condition), or df.size())
dann verwenden.sum()
und denn countif
ich kann (groupby functions
meine Antwort verwenden und suchen oder einen Filter und den verwenden.count())
Gibt es einen einfachen Ein-Schritt-Prozess, um diese Funktionen auszuführen, bei dem Sie die Bedingung und den Datenrahmen eingeben und die Summe oder die gezählten Ergebnisse erhalten?
Sie haben die ausgefallenen Indizierungsfunktionen von Datenrahmen nicht erwähnt, z.
>>> df = pd.DataFrame({"class":[1,1,1,2,2], "value":[1,2,3,4,5]}) >>> df[df["class"]==1].sum() class 3 value 6 dtype: int64 >>> df[df["class"]==1].sum()["value"] 6 >>> df[df["class"]==1].count()["value"] 3
Sie könnten
df["class"]==1
durch eine andere Bedingung ersetzen .quelle
df[df["class"]==1].count()["value"]
unddf[df["value"]==2].count()["class"]
len(df[df["class"]==1])
Normalerweise verwende ich numpy sum über der logischen Bedingungsspalte:
>>> import numpy as np >>> import pandas as pd >>> df = pd.DataFrame({'Age' : [20,24,18,5,78]}) >>> np.sum(df['Age'] > 20) 2
Dies scheint mir etwas kürzer als die oben vorgestellte Lösung
quelle