Ich arbeite mit einem Dataset mit einer großen Anzahl von Prädiktoren und möchte einfach verschiedene zusammengesetzte Variablengruppierungen mithilfe einer Steuerdatei testen. Für den Anfang würde die Kontrolldatei angeben, ob eine Variable enthalten sein soll oder nicht. Hier ein Beispiel:Wie wählt man Spalten im Datenframe basierend auf der Suche in einem anderen?
control = pd.DataFrame({'Variable': ['Var1','Var2','Var3'],
'Include': [1,0,1]})
control
Out[48]:
Include Variable
0 1 Var1
1 0 Var2
2 1 Var3
data = pd.DataFrame({'Sample':['a','b','c'],
'Var1': [1,0,0],
'Var2': [0,1,0],
'Var3': [0,0,1]})
data
Out[50]:
Sample Var1 Var2 Var3
0 a 1 0 0
1 b 0 1 0
2 c 0 0 1
So das Ergebnis nach der Verarbeitung sollte ein neuer Datenrahmen sein, die wie Daten aussehen, aber fallen die Var2 Säule:
data2
Out[51]:
Sample Var1 Var3
0 a 1 0
1 b 0 0
2 c 0 1
Ich kann diese erhalten, indem selektiv zu arbeiten Löschen von Spalten mit .itterows():
data2 = data.copy()
for index, row in control.iterrows():
if row['Include'] != 1:
z = (row['Variable'])
data2.drop(z, axis=1,inplace="True")
Dies funktioniert, aber es scheint, dass es eine Möglichkeit geben, sollte dies sofort auf dem gesamten Datenrahmen zu tun. Etwas wie:
data2 = data[control['Include'] == 1]
Dies filtert jedoch Zeilen basierend auf dem 'Include' Wert, nicht Spalten.
Alle Vorschläge geschätzt.
Danke @DYZ eine ziemlich schnelle Lösung mit numpy und Rekonstruktion sein. Was ist der richtige Weg, um in diesem Fall auf boolesche Werte zu testen? Immer noch == 1? – user1355179
Es ist wie folgt: 'headers = control ['Include']] ['Variable']' – DyZ