Diese Frage ähnelt this one, aber es gibt einen Unterschied: hier habe ich anstelle eines einzelnen Wertes eine Liste von Werten in einer Spalte von Datenrahmen.Effiziente Art und Weise eine Art von Ein-Hot-Codierung in Pandas zu tun
Nehmen wir an, wir haben einen Pandas-Datenrahmen mit einer Spalte namens words
. Es enthält den Index der Wörter, die in einem Dokument verfügbar sind. Im folgenden Datenfeld gibt es beispielsweise zwei Dokumente, in denen das erste die Wörter ['a','b']
und das zweite ['a','c','d']
enthält.
df = pd.DataFrame()
df['words'] = [['a','b'],['a','c','d']]
Ich möchte die words
Spalte verschiedene binäre Spalten konvertieren, eine Spalte für jedes Wort. Die obige Datenrahmen wird auf umgerechnet werden:
df['a'] = [True, True]
df['b'] = [True, False]
df['c'] = [False, True]
df['d'] = [False, True]
Vorerst habe ich den folgenden Code, wo es verschiedene Wörter w
verfügbar iteriert in der words
Spalte.
df[w] = [w in word_list for word_list in df['words']]
Offensichtlich ist es sehr langsam. Gibt es einen effizienten Weg, dies zu tun?
Sie können [diese Lösung] überprüfen möchten (https://stackoverflow.com/a/45684296/5741205) – MaxU