Ich versuche, Schlüsselwörter in einer DataFrame-Spalte zu identifizieren und anschließend neue binäre Spalten zu erstellen, wenn die Schlüsselwörter identifiziert werden. Das folgende reproduzierbare Beispiel funktioniert, wenn die einzelnen String-Listen nur ein einziges zu identifizierendes Keyword enthalten. es zeigt auch auf Stufe 2, wo das Problem liegt.So identifizieren Sie mehr als ein Listenelement in einer for-Schleife
Das Problem ist, ich möchte mehr associated Schlüsselwörter zu jeder Liste hinzufügen, so dass zugeordnete Begriffe effektiv in die neuen Spalten kategorisiert werden können. Wenn ich jedoch mehr als ein Schlüsselwort zu den Listen hinzufüge, bekomme ich ValueError: Length of values does not match length of index
.
# 1. Create dataframe
test = {'comment': ['my pay review was not enough',
'my annual bonus was too low, I need more pay',
'my pay is too low', 'my bonus is huge', 'better pay please'],
'team': ['team1', 'team2', 'team3', 'team1', 'team2']}
test = pd.DataFrame(test)
# 2. create string lists - (these are the lists I want to add multiple associated keywords too)
pay_strings = ['pay']
bonus_strings = ['bonus']
# 3. Create empty lists
pay_col = []
bonus_col = []
# 4. Loop through `comment` column to identify words and represent them in the new lists with binary values
for row in test['comment']:
for pay in pay_strings:
if pay in row:
pay_col.append(1)
elif pay not in row:
pay_col.append(0)
for bonus in bonus_strings:
if bonus in row:
bonus_col.append(1)
elif bonus not in row:
bonus_col.append(0)
# 5. Add new lists to dataframe
test['pay'] = pay_col
test['bonus'] = bonus_col
test
# 6. Resulting dataframe
comment team pay bonus
0 my pay review was not enough team1 1 0
1 my annual bonus was too low, I need more pay team2 1 1
2 my pay is too low team3 1 0
3 my bonus is huge team1 0 1
4 better pay please team2 1 0
Gibt es eine Möglichkeit, mehrere Elemente in Listen effektiv nachzuschlagen, oder gibt es eine bessere Möglichkeit, dies zu tun?
Ich folge Ihrem Denken, aber Ihre Vorschläge sind ein wenig jenseits der Python-Ebene. Könnten Sie mir einen Hinweis geben, wie Sie Letzteres tun können? – RDJ
pay_col = [0 für _ in pay_string] # initialisieren Sie dann Ihren "Treffer" -Zähler, anstatt 1 anzuhängen, wenn eine Übereinstimmung gefunden wird, versuchen Sie den vorhandenen (0) Zählwert wie in: pay_col [
Danke. Ich kann entweder nicht dem folgen, was du vorschlägst, oder du kannst deinen Vorschlag nicht zur Ausführung bringen. Ich muss zurück zum Zeichenbrett gehen. Ich hatte keine Idee, Worte aus einer Kolumne auf diese Weise zu extrahieren, wäre so kompliziert. – RDJ