2016-07-30 11 views
2

Ich habe einen Datenrahmen mit zwei Spalten ist Date und das andere ist Location(Object) Datentyp, unten ist das Format der Lage Spalten mit Werten:Python: Wie teilt man eine String-Spalte in einen Datenrahmen?

Date           Location 
1  07/12/1912       AtlantiCity, New Jersey 
2  08/06/1913     Victoria, British Columbia, Canada 
3  09/09/1913         Over the North Sea 
4  10/17/1913       Near Johannisthal, Germany 
5  03/05/1915         Tienen, Belgium 
6  09/03/1915        Off Cuxhaven, Germany 
7  07/28/1916        Near Jambol, Bulgeria 
8  09/24/1916        Billericay, England 
9  10/01/1916        Potters Bar, England 
10 11/21/1916          Mainz, Germany 

meine Anforderung ist die Lage von "," Separator aufzuspalten und nur halten der zweite Teil davon (ex. New Jersey, Canada, Germany, England etc..) in der Spalte Standort. Ich muss auch prüfen, ob es nur ein einziges Element (Werte mit einzelnen Element ohne ",")

Gibt es eine Möglichkeit, ich kann es mit vordefinierten Methode, ohne jede Zeile durchlaufen?

Tut mir leid, wenn die Frage von der Norm ist, da ich neu bei Python bin und immer noch lerne.

Antwort

2

Ein gerader Weg nach vorn ist die split Verfahren zu jedem Element der Spalte apply und die letzte abholen:

df.Location.apply(lambda x: x.split(",")[-1]) 

1    New Jersey 
2     Canada 
3  Over the North Sea 
4    Germany 
5    Belgium 
6    Germany 
7    Bulgeria 
8    England 
9    England 
10    Germany 
Name: Location, dtype: object 

Um zu überprüfen, ob jede Zelle nur ein Element hat man str.contains Methode auf die verwenden können Säule:

df.Location.str.contains(",") 

1  True 
2  True 
3  False 
4  True 
5  True 
6  True 
7  True 
8  True 
9  True 
10  True 
Name: Location, dtype: bool 
1

Wir könnten versuchen, mit str.extract

print(df['Location'].str.extract(r'([^,]+$)'))  
#0   New Jersey 
#1    Canada 
#2 Over the North Sea 
#3    Germany 
#4    Belgium 
#5    Germany 
#6    Bulgeria 
#7    England 
#8    England 
#9    Germany 
Verwandte Themen