2017-12-09 3 views
0

Ich bin interessiert, wenn wir pandas.core.groupby.DataFrameGroupBy.agg Funktion verwenden können, um arithmetische Operationen für mehrere Spalten Spalten durchzuführen. Zum Beispiel:Pandas Agg fuction mit Operationen an mehreren Spalten

import numpy as np 
import pandas as pd 

df = pd.DataFrame(np.arange(15).reshape(5, 3)) 
df['C'] = [0, 0, 2, 2, 5] 
print(df.groupby('C').mean()[0] - df.groupby('C').mean()[1]) 
print(df.groupby('C').agg({0: 'mean', 1: 'sum', 2: 'nunique', 'C': 'mean0-mean1'})) 

Ist es irgendwie möglich, dass wir wie in diesem Beispiel führen erhalten: die Differenz zwischen den Mittelwerten der Spalte 0 und Spalte 1 durch Spalte ‚C‘ gruppiert? df

0 1 2 C 
0 0 1 2 0 
1 3 4 5 0 
2 6 7 8 2 
3 9 10 11 2 
4 12 13 14 5 

groupped Unterschied

C 
0 -1.0 
2 -1.0 
5 -1.0 
dtype: float64 

Ich bin nicht daran interessiert, mit Lösungen, die nicht agg Methode nicht verwendet. Ich bin nur neugierig, wenn die agg-Methode mehrere Spalten als Argument annehmen kann und dann einige Operationen ausführen kann, um eine Spalte zurückzugeben, nachdem der Job erledigt ist.

+0

Vielleicht 'agg' nicht für die – Dark

+0

gemeint ist, was Ihre gewünschten Daten eingestellt? – MaxU

+0

Ich möchte nur arithmetische Operationen auf mehreren Spalten mit agg bekommen können. – Kornel

Antwort

0

IIUC:

In [12]: df.groupby('C').mean().diff(axis=1) 
Out[12]: 
    0 1 2 
C 
0 NaN 1.0 1.0 
2 NaN 1.0 1.0 
5 NaN 1.0 1.0 

oder

In [13]: df.groupby('C').mean().diff(-1, axis=1) 
Out[13]: 
    0 1 2 
C 
0 -1.0 -1.0 NaN 
2 -1.0 -1.0 NaN 
5 -1.0 -1.0 NaN 
Verwandte Themen