2016-03-24 6 views
1

i einen Datenrahmen aufweisen mit ‚Windgeschwindingkeit bin“ als Index, und die Werte der ‚Windgeschwindigkeit‘, ‚pt_power_avg‘ und ‚Sigma‘.Python Iteration über jedes Bins und dividiert durch eine Konstante

I eine andere benötigt berechnen 2 Spalten mit den Formeln "fi '&' pi '.

fi = ((Vi/Vavg)^2 - (Vi_1/Vavg_1)^2) 

Vi_1 = ist der vorherige Bin-Wert.

wo Vavg = [0.5, 4,5,6,7,8,9,10,11] - dies muss manuell während der Berechnung hinzugefügt werden.

Ich habe den folgenden Datenrahmen mit Gruppierungsergebnis.

pt_power_avg[Pi] normalized_speed[Vi] pt_power_sigma normalized_speed   
(3, 4] 44.779562 3.563218 28.949708 
(4, 5] 105.121429 4.507163 27.213929 
(5, 6] 195.448421 5.515163 29.652947 
(6, 7] 291.834694 6.400732 31.938435 
(7, 8] 538.570588 7.537676 30.268088 
(8, 9] 727.110345 8.232832 23.327931 
(9, 10] 995.100000 9.114639 19.696667 

aep= df.groupby(pd.cut(df.normalized_speed,ws_bin))['pt_power_avg','normalized_speed','pt_power_sigma'].mean().fillna(0) 
+1

ist es unklar, was ist Ihr ursprünglicher Datenrahmen? –

+1

Bitte poste ein [MCVE] (http://stackoverflow.com/help/mcve) –

Antwort

0

Verwenden Sie normale mathematische Operationen, um Vi/Vavg zu berechnen. Dann verwenden Sie DataFrame.diff(), um den Unterschied zwischen den Zeilen zu berechnen. Hier ist eine Beispiel Jupyter Sitzung:

In [64]: data = """\ 
     bin\tspeed\tpower   
     (3, 4]\t44.779562\t3.563218 
     (4, 5]\t105.121429\t4.507163 
     (5, 6]\t195.448421\t5.515163 
     (6, 7]\t291.834694\t6.400732 
     (7, 8]\t538.570588\t7.537676 
     (8, 9]\t727.110345\t8.232832 
     (9, 10]\t995.100000\t9.114639 
     """ 
     df = pd.read_table(io.StringIO(data)) 

     Vavg = pd.Series([0.5, 4,5,6,7,8,9,10,11]) 
​ 
In [67]: a = (df.speed/Vavg[:len(V.speed)])**2 
​   a 

Out[67]: 0  8020.836692 
     1  690.657177 
     2  1528.003411 
     3  2365.763573 
     4  5919.556699 
     5  8260.772716 
     6 12224.987778 
     dtype: float64 

In [68]: a.diff() 
Out[68]: 0   NaN 
     1 -7330.179514 
     2  837.346234 
     3  837.760162 
     4 3553.793126 
     5 2341.216017 
     6 3964.215062 
     dtype: float64 

In [69]: df['fi'] = a.diff() 
     print(df) 

       bin  speed power      fi 
     0 (3, 4] 44.779562   3.563218   NaN 
     1 (4, 5] 105.121429   4.507163 -7330.179514 
     2 (5, 6] 195.448421   5.515163 837.346234 
     3 (6, 7] 291.834694   6.400732 837.760162 
     4 (7, 8] 538.570588   7.537676 3553.793126 
     5 (8, 9] 727.110345   8.232832 2341.216017 
     6 (9, 10] 995.100000   9.114639 3964.215062