2017-12-11 5 views
0

Ich habe einen Datensatz, der aufeinanderfolgende Zeilen mit einem 'Marker' (Zahlen 0,1,2, ....) hat, die angibt, dass alle diese Zeilen gehören zu demselben 'Bild' (zB Marker = [0,0,0,0,1,1,1,2,2,2,2,2, ....]). Jetzt möchte ich, dass mein Programm den Mittelwert jedes "Bildes" angibt, z. B. alle mit der Nummer = 0 gehören zu Bild 0 und berechnen den Mittelwert des gesamten Datenrahmens innerhalb dieser Markierung. Bisher habe ich versucht, dies:Pandas: berechnen Mittelwert nach bestimmten Wert in Spalte mit einer for-Schleife

###Read data in: 
df = pd.read_csv(path_i, sep = ",") 

#### Calculate means per picture: 

number = 0 

for i in df: 
     picture = df.marker[number] 
     means = df.mean(picture) 
     number = number + 1 

mein Code gibt mir Ausgabe: aber es ist das gleiche für jede Zeile: Ich denke, da im erwarteten etwa 96 Bildern, es gibt mir den Mittelwert des gesamten Datenrahmens.

Unnamed: 0  18547.000000 
index   18548.000000 
pos_time  341778.900067 
pos_x    -95.375306 
pos_y    -64.948367 
pup_time  341778.900067 
pup_diameter   3.116594 
marker    48.336649 
which_AOI   1.637822 
fixation   17.559536 
dtype: float64 
+0

Mögliche Duplikat von [Wie gemein berechnen Werte gruppiert auf a andere Spalte in Pandas] (https://stackoverflow.com/questions/30482071/how-to-calculate-mean-values-grouped-on-another-column-in-pandas) – miradulo

Antwort

0

Sie benötigen groupby und Aggregat mean:

df1 = df.groupby('marker').mean() 

Und wenn Bedarf als Spalte in der Ausgabe:

df1 = df.groupby('marker', as_index=False).mean() 

df1 = df.groupby('marker').mean().reset_index() 
+0

funktioniert perfekt danke :) – ktk

+0

Sie sind herzlich willkommen! Wenn meine Antwort hilfreich war, vergiss nicht [accept] (https://stackoverflow.com/help/someone-answers) es - klicke auf das Häkchen ('✓') neben der Antwort, um es von ausgegraut zu ändern ausgefüllt. Danke. – jezrael

Verwandte Themen