Ich bin neu in Python, und ich versuche, die Std eines kreisförmigen Daten (Windrichtungen) die Daten durch einige Merkmale gruppieren. Hier ist ein Satz der df, die ich benutze.groupby anwenden nicht geben erwartetes Ergebnis
Profile bin inflow_direction
0 1 51 331.7
1 1 51 332.8
2 1 51 334.1
3 1 51 335.4
4 1 51 336.4
5 1 66 337.3
6 1 66 337.5
7 1 66 337.6
8 1 66 337.7
9 1 66 337.6
Ich brauche die Std für jede Gruppe von bin innerhalb jedes Profils. Ich habe die std Funktion wie folgt definiert:
def circstd(j) : samples = np.radians (j) return scipy.stats.circstd(samples, high=6.283185307179586, low=0, axis=None)
wenn ich Gruppe:
df.groupby(['Profile','bin']).apply(circstd)
Die aus ist:
idscng_f bin
1 51 0.567811
66 0.671470
Aber ich erwartete
idscng_f bin
1 51 0.0296
66 0.0025
Was ist das Problem hier?
versuchen, die Spalte angibt, auf dem die Aktion ausgeführt werden soll? + Die Umwandlung in Radianten auf derselben Stufe kompliziert die Dinge. Teilen Sie diese beiden Dinge auf, bringen Sie sie zur Arbeit, verstehen Sie sie und fusionieren Sie sie dann wieder zusammen, wenn Sie möchten –
Wie kann ich - mit der Gruppe nach - die Spalte angeben, in der die Aktion ausgeführt werden soll? – ydopico
siehe Methode 1 auf die Antwort von @Nickil Maveli unten. –