2016-10-24 3 views
1

Ich möchte eine Berechnung basierend auf 4 Spalten in einem Datenrahmen durchführen und das Ergebnis auf eine neue Spalte anwenden.Pandas Dataframe - neue Spalte basierend auf einfacher Berechnung erstellen

Die 4 Spalten, die mich interessieren, sind wie folgt.

rating_1, time_1, rating_2, time_2 col_x col_y etc 
0 1    1   1  1  1  1 

Wenn Time_1 größer als time_2 ist möchte ich rating_1 in der neuen Spalte, wenn time_2 größer I rating_2 in der Spalte werden soll.

Was ist der einfachste Weg, dies bitte zu tun?

+0

ich hinzufügen sollte ich mehrere Spalten in meiner Datenrahmen haben. – rix

Antwort

2

können Sie numpy.where() Methode verwenden:

In [241]: x 
Out[241]: 
    rating_1 time_1 rating_2 time_2 col_x col_y 
0  11  1  21  1  1  1 
1  12  2  21  1  1  1 
2  13  1  21  5  1  1 
3  14  5  21  5  1  1 

In [242]: x['new'] = np.where(x.time_1 > x.time_2, x.rating_1, x.rating_2) 

In [243]: x 
Out[243]: 
    rating_1 time_1 rating_2 time_2 col_x col_y new 
0  11  1  21  1  1  1 21 
1  12  2  21  1  1  1 12 
2  13  1  21  5  1  1 21 
3  14  5  21  5  1  1 21 
+0

Sorry, nicht explizit zu sein und danke für den Zeiger, aber ich muss dies für jede Zeile tun, nicht nur eine Zeile. – rix

+0

@rix, wird es für alle Reihen getan werden, versuchen Sie es einfach ... – MaxU

+0

funktioniert super danke – rix

1
def myfunc(row): 
    if row.time_1 >= row.time_2: 
     return row.rating_1 
    else: 
     return row.rating_2 
df.loc[:, 'calculatedColumn'] = df.apply(myfunc, axis = 1) 
Verwandte Themen