2016-04-12 5 views
1

Ich versuche, eine Reihe in meinem Dataframe (SDB-Datei) zu erstellen, deren Werte auf mehreren geschachtelten bedingten Anweisungen mit Elementen aus SDB-Datei-Datenrahmen basieren. Die Reihe rins_code ist mit String-Werten gefüllt.Numpy/Pandas-Serie beginnt mit Operator? Existiert es?

Die Erklärung unten funktioniert jedoch muss ich konfigurieren sagen, wenn ‚reins_code‘ beginnt mit ‚R R #‘, anstatt eine spezifische == ‚‘

sdbfile['product'] = np.where(sdbfile.reins_code == 'R2', 'HiredPlant','Trad') 

Es ist nicht die String-Funktion nicht mag startswith() als eine np.series?

Kann jemand bitte helfen? Habe die Dokumentation durchgewacht, kann aber keinen Hinweis auf dieses Problem finden .......

+0

Sie kann nur 1 Antwort annehmen, später, wenn Sie genug Rep erhalten Sie können – EdChum

+0

Prost. Das ist wirklich ein cooler Ort. Meine Etikette wird sich im Laufe der Zeit verbessern, und ich bin mir sicher, dass es meine Codierung sein wird. – b123kotey

Antwort

1

Verwenden der vektorisierten str.startswith eine Boolesche Maske zurückzukehren:

In [6]: 
df = pd.DataFrame({'a':['R1asda','R2asdsa','foo']}) 
df 

Out[6]: 
     a 
0 R1asda 
1 R2asdsa 
2  foo 

In [8]: 
df['a'].str.startswith('R2') 

Out[8]: 
0 False 
1 True 
2 False 
Name: a, dtype: bool 

In [9]: 
df[df['a'].str.startswith('R2')] 

Out[9]: 
     a 
1 R2asdsa 
+0

Danke. In meiner Unerfahrenheit habe ich es aus dem falschen Winkel versucht, vor dem Vergleich zu konvertieren, anstatt die richtige str-Funktion in Bezug auf mein spezifisches Pandas-Objekt auszuwählen. – b123kotey

+0

Keine Sorge, wenn meine Antwort Ihre Frage gelöst hat, dann können Sie es akzeptieren, es wird ein leeres Häkchen oben links in meiner Antwort sein – EdChum

1

Verwenden Sie das Attribut pandas str. http://pandas.pydata.org/pandas-docs/stable/text.html

Serie und der Index mit einem Satz von String-Verarbeitungsverfahren ausgestattet, die es leicht machen, an jedem Element des Arrays zu betreiben. Vielleicht am wichtigsten, diese Methoden schließen fehlende/NA-Werte automatisch aus. Diese werden über die Str Attribut zugegriffen und allgemein haben Namen, die äquivalente Matching (Skalar) integrierten String-Methoden:

sdbfile['product'] = np.where(sdbfile.reins_code.str[0] == 'R', 'HiredPlant','Trad') 
+0

Das passt perfekt! Vielen Dank! – b123kotey

Verwandte Themen