[FIXED] „One-Hot“-Kodierung in Pandas umkehren

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)

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like