2016-07-15 8 views
1

Ich habe eine neue Frage bezüglich meiner my old post. In diesem Beitrag wurde das Problem vereinfacht, da nur zwei w zu vergleichen waren. Angenommen, ich habe mehr als 2, z. B. 3, mit Frequenzen (1, 1, 0). Ich möchte diese Liste überprüfen und, , wenn der Maximalwert, mehr als einmal erscheint, schreiben Sie 0, andernfalls schreiben Sie die Spaltenbezeichnung des Maximalwerts, wie im vorherigen Beitrag. Ich habe versucht, die erste Antwort dieses Posts anzupassen, aber ich stecke fest.Pandas: Vergleiche Listenwerte und schreibe eine neue Spalte

Jede Hilfe wäre willkommen, danke für Ihre Aufmerksamkeit. :-)

EDITED:

Ein Beispiel für meine wirkliche df ist:

|FID |geometry|GridCode|catarro|constipado|gripa|gripe|resfriado|resfrio 0 |9592|... |9592 |1 |0 |0 |3 | 3 | 1

In diesem Fall wäre die gewünschte Ausgabe: |FID |geometry|GridCode|catarro|constipado|gripa|gripe|resfriado|resfrio| max 0 |9592|... |9592 |1 |0 |0 |3 | 3 | 1 | 0

+0

Sind diese 0-1 Spalten? – ayhan

+0

Ja, ich möchte das Zeug in den letzten 6 Spalten tun –

Antwort

3

EDITED:

# You should drop all extra fields 
# don't worry they are still present in original dataframe (df) 
words = df.drop(['FID'], axis=1) 

# Get maximums for each row 
maxes = words.max(axis=1) 

# Create new column with the features names with maximum values 
df['max'] = words.idxmax(axis=1) 

# Create a mask with non-accepted rows 
mask = (
    words.values.ravel() == maxes.values.repeat(len(words.columns)).ravel() 
).reshape(-1,len(words.columns)).astype(int).sum(axis=1)>1 

# Wipe 'max' column in non-accepted rows 
df.ix[mask,'max'] = 0 
+0

Es funktioniert nicht für mich. Wenn ich 'df.filter (regex = r'w \ d ')' auf mein df anwende, gibt es ein leeres df zurück, nur mit der Indexspalte. Eigentlich habe ich mein Problem gefunden, w's sind "Worte" sie sind nicht w1, w2, w3 ... Ich werde versuchen, diesen Code anzupassen. –

+0

Wenn du mehr über deine ursprüngliche Aufgabe erzählst, bin ich mir sicher, dass ich dir helfen könnte. Wenn Sie beispielsweise mit Worthäufigkeiten arbeiten, können Sie einige Transformatoren verwenden, die beim maschinellen Lernen verwendet werden (http://scikit-learn.org/stable/modules/generated/sklearn.feature_extraction.text.CountVectorizer.html, http://scikit-learn.org/stable/modules/generated/sklearn.feature_extraction.text.TfidfVectorizer.html#sklearn.feature_extraction.text.TfidfVectorizer) – frist

+0

Ich habe meinen ersten Post aktualisiert, Entschuldigung für die Verzögerung. Ich bin neu in der Gegend. –

Verwandte Themen