Angenommen wählen Ich habe einen Datenrahmen:Pandas mehrere Spalten bedingt
C1 V1 C2 V2 Cond
1 2 3 4 X
5 6 7 8 Y
9 10 11 12 X
Die Anweisungen geben sollte: if Cond == X, pick C1 and C2, else pick C2 and V2
.
Der Ausgang ist so etwas wie Datenrahmen:
C V
1 2
7 8
9 10
** EDIT: eine weitere Anforderung hinzu: die Anzahl der Spalten ändern können, aber einige Namensmuster folgen. Wählen Sie in diesem Fall alle Spalten mit "1", ansonsten mit "2". Ich denke, die hartcodierte Lösung funktioniert möglicherweise nicht.
Mögliche doppelte von [Cre Spalte mit ELIF in Pandas] (http://stackoverflow.com/questions/18194404/create-column-with-elif-in-pandas) – e4c5
'indexer = {'X': ['C1', 'V1'] , 'Y': ['C2', 'V2']}; pd.concat ([pd.DataFrame (df.loc [df.Cond == k, v] .values, Spalten = ['C', 'V']) für k, v in indexer.items()]) ' ist eine Möglichkeit, dies zu tun, aber es bewahrt nicht die Reihenfolge der Zeilen. – Abdou