2017-03-21 2 views
1

Ich habe einen Datenrahmen, der eine "Hosen" -Spalte mit vielen verschiedenen Arten von Hosen hat. Die meisten Hosen würden nach ihrem Typ beginnen. Zum Beispiel: Jeans-Replay-blau, oder Chino-Uniqlo-, oder vielleicht Smart-Next- ~). Andere hätten nur einen Typ, aber nur einen langen Namen (2 oder 3 Strings). Was ich möchte, ist durch diese Spalte zu durchlaufen, um die Werte zu ändern, nur Jeans wenn Jeans in der Zelle ist die Zelle und so weiter .... so kann ich sie leicht gruppieren.Problematische Werte

Wie kann ich das mit meiner for-Schleife erreichen?

+1

posten Sie bitte rohe Daten, Code, um Ihre df, Ihre Versuche und die gewünschte Ausgabe zu erstellen. Grundsätzlich kann das aber noch geklärt werden – EdChum

Antwort

1

Es scheint, Sie split brauchen, und dann erste Wert von Listen von str[0] wählen:

df['type'] = df['Trousers'].str.split('-').str[0] 

Probe:

df = pd.DataFrame({'Trousers':['Jeans- Replay-blue','Chino- Uniqlo-~','Smart-Next-~']}) 
print (df) 
      Trousers 
0 Jeans- Replay-blue 
1  Chino- Uniqlo-~ 
2  Smart-Next-~ 

df['type'] = df['Trousers'].str.split('-').str[0] 
print (df) 
      Trousers type 
0 Jeans- Replay-blue Jeans 
1  Chino- Uniqlo-~ Chino 
2  Smart-Next-~ Smart 

df['Trousers'] = df['Trousers'].str.split('-').str[0] 
print (df) 
    Trousers 
0 Jeans 
1 Chino 
2 Smart 

Eine andere Lösung mit extract:

df['Trousers'] = df['Trousers'].str.extract('([a-zA-z]+)-', expand=False) 
print (df) 
    Trousers 
0 Jeans 
1 Chino 
2 Smart 
+0

Danke nochmals. Aber ich stolpere irgendwie in das gleiche Problem, denn alle Hosen beginnen nicht mit ihrem 'Typ' + '-'. Eine Schleife wäre großartig, so dass ich keine 2 oder 3 Klassifizierungsspalten hätte. – Shyryu

+0

Können Sie Fragen mit problematischen Werten bearbeiten? Vielen Dank. – jezrael

+0

Ich denke, können Sie eine Liste von Werten erhalten, wo diese Lösung nicht verwendet werden kann? Entschuldigung, vielleicht war meine Erklärung nicht klar. – jezrael

Verwandte Themen