2016-12-17 5 views
1

ich zur Zeit die folgende Spalte:Flatten eine Pandas Datenrahmen Spalte

0   [Joe] 
1   John 
2   Mary 
3   [Joey] 
4   Harry 
5  [Susan] 
6   Kevin 

Ich kann die [] zu entfernen scheinen aus mit den Zeilen machen [] = NaN

klar zu sein, ich will Spalte wie folgt aussehen:

0   Joe 
1   John 
2   Mary 
3   Joey 
4   Harry 
5   Susan 
6   Kevin 

Kann jemand helfen?

Antwort

3

Ihr Titel, dass einige Elemente Ihrer Serie scheint zu implizieren Listen sind.

Setup

s = pd.Series([['Joe'], 'John', 'Mary', ['Joey'], 'Harry', ['Susan'], 'Kevin']) 
s 

0  [Joe] 
1  John 
2  Mary 
3  [Joey] 
4  Harry 
5 [Susan] 
6  Kevin 
dtype: object 

Option 1
gelten mit pd.Series

s.apply(pd.Series).squeeze() 

0  Joe 
1  John 
2  Mary 
3  Joey 
4 Harry 
5 Susan 
6 Kevin 
Name: 0, dtype: object 
0

Versuchen Sie folgendes:

df['column_name'] = df['column_name'].apply(lambda x: str(x).strip("'[]") if type(x) == list else x) 
+0

'Attribute:‚list‘Objekt hat kein Attribut‚strip'' Ich denke, die Listen in der Spalte Probleme verursachen. Ich muss die mehrfachen Listen von Länge 1 innerhalb der Spalte adressieren, anstatt nur das '[]' – spies006

+0

zu entfernen Ja, das funktionierte! Es gab die Spalte mit einfachen Anführungszeichen zurück, d. H. '' ''Wo vorher' [] 'war. Um diese zu entfernen, habe ich '.strip ('' '')' an das Ende Ihrer Lösung angehängt, so dass es am Ende funktioniert: – spies006

+0

'df ['column_name'] = df ['column_name']. Apply (Lambda x: str (x) .strip ('[]'). strip ('' '')) ' – spies006

0

Warum nicht einfach tun s.astype(str).str.strip ("'[]'") oder

s.map(lambda x: x if type(x) != list else x [0])

Verwandte Themen