Betrachten Sie diesen Datenrahmen:Pandas Aggregation - Berechnungen zwischen den Spalten
np.random.seed(0)
df_agg = pd.DataFrame({'A' : ['foo', 'bar', 'foo', 'bar',
'foo', 'bar', 'foo', 'foo'],
'C' : np.random.choice(2, 8)})
Ich mag folgende Spalten von A
gruppierten berechnen:
- Anzahl der Elemente
- Anzahl von True in
C
- Prozentsatz von True in
C
- Anzahl der False in
C
- Prozentsatz falsch in
C
ersten drei Elemente sind einfach mit Aggregationen:
aggregations = {
'C': {
'Number of elements': 'count',
'Number of True':sum,
'Percentage of True': 'mean'
}
}
df_tab = df_agg.groupby('A').agg(aggregations)
print df_tab
Und er Ausgang:
C
Number of elements Number of True Percentage of True
A
bar 3 2 0.666667
foo 5 4 0.800000
Allerdings weiß ich nicht, Wie, in derselben Aggregation, berechnen Sie Spalten, die Kombination von anderen Spalten sind - Anzahl und Prozentsatz von Fals e.
Als Abhilfe kann, kann ich dies tun:
df_tab = df_tab['C'] #flatten
df_tab['Number of False'] = df_tab['Number of elements'] - df_tab['Number of True']
df_tab['Percentage of False'] = 1 - df_tab['Percentage of True']
Welche nachgeben, was ich will, aber ich frage mich, wie es auf einmal zu tun.
Number of elements Number of True Percentage of True Number of False Percentage of False
A
bar 3 2 0.666667 1 0.333333
foo 5 4 0.800000 1 0.200000
Ich denke, Ihre Auswahlmöglichkeiten sind 1) definieren sekundäre Spalten wie "Anzahl der falschen" explizit und 2) erstellen Sie einen sekundären Datenrahmen und fügen Sie das an "df_tab". – periphreal