Ausgabe
Ich möchte von diesem Datenrahmen ausgehen, der im Grunde genommen heiß codiert ist.
In [2]: pd.DataFrame({"monkey":[0,1,0],"rabbit":[1,0,0],"fox":[0,0,1]})
Out[2]:
fox monkey rabbit
0 0 0 1
1 0 1 0
2 1 0 0
3 0 0 0
4 0 0 0
Zu diesem, das “umgekehrt” One-Hot-codiert ist.
In [3]: pd.DataFrame({"animal":["monkey","rabbit","fox"]})
Out[3]:
animal
0 monkey
1 rabbit
2 fox
Ich stelle mir vor, es gibt eine clevere Verwendung von apply oder zip, um Thins zu machen, aber ich bin mir nicht sicher, wie … Kann jemand helfen?
Ich hatte nicht viel Erfolg mit der Indizierung usw., um zu versuchen, dieses Problem zu lösen.
Lösung
Ich würde apply verwenden, um die Spalten zu dekodieren:
In [2]: animals = pd.DataFrame({"monkey":[0,1,0,0,0],"rabbit":[1,0,0,0,0],"fox":[0,0,1,0,0]})
In [3]: def get_animal(row):
...: for c in animals.columns:
...: if row[c]==1:
...: return c
In [4]: animals.apply(get_animal, axis=1)
Out[4]:
0 rabbit
1 monkey
2 fox
3 None
4 None
dtype: object
Beantwortet von – PYOak
Antwort geprüft von – Mildred Charles (FixError Admin)