2017-11-14 1 views
0

Ich habe ein Datenframe, das Listenelement in einer einzelnen Zelle enthält.So wählen Sie eine Liste in Pandas Dataframe

Zum Beispiel Datenrahmen 'zu Hause'

a  b     c 
'book' ['living room'] ['cat','foo'] 
'shoes' ['door']   ['man','woman'] 
'cook' []    ['knife'] 

Die Frage ist, wie kann ich den 'Koch' wählen, basierend auf b == [] (leere Liste).

wie

home.loc[home.b==[]] 

BTW, habe ich die Liste mit Lambda-x: [] Funktion.

Antwort

2

Try this:

home.loc[home['b'].str.len()==0] 

UPDATE:

In [313]: d 
Out[313]: 
     a    b    c 
0 book [living room] [cat, foo] 
1 shoes   [door] [man, woman] 
2 cook    []  [knife] 

In [314]: lst = ['cat','foo'] 

In [315]: d.loc[d['c'].astype(str) == str(lst)] 
Out[315]: 
     a    b   c 
0 book [living room] [cat, foo] 
+0

Vielen Dank, aber ich meine, kann ich eine bestimmte Zeile, anstatt Kontrolle durch Länge wählen. Es ist ein bisschen zwielichtig. –

+0

@ Zhonghao.KevinXie, ich habe eine kleine Demo hinzugefügt - ist das was du willst? – MaxU

+0

Es funktioniert. Bitte sehen Sie meine Aktualisierung, gibt es eine effiziente Möglichkeit, eine zu wählen, wenn es zwei Einträge in einer Liste gibt. Da meine realen Daten mehrere Einträge in einer Liste haben. –

1

IIUC, @MaxU Verfahren optimal ist, glaube ich.

Sie können jedoch versuchen, diese:

home.loc[home.b.apply(lambda x: x == [])] 

Ausgang:

 a b  c 
2 cook [] [knife] 
+1

Danke. Es ist hilfreich, aber als @MaxU zuerst antwortete, tickte ich ihn. –

Verwandte Themen