2017-11-14 4 views
0

단일 셀에 목록 항목이 포함 된 데이터 프레임이 있습니다.팬더 데이터 프레임에서 목록을 선택하는 방법

예를 들어, 데이터 프레임 '집'

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

문제는 내가 B를 기반으로 '요리사'를 선택 어떻게입니다 == [] (빈리스트). [] 기능 :

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

은 BTW, I 람다 (X)를 이용하여 목록을 생성.

답변

2

이 시도 :

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

감사합니다,하지만 난 길이에 의해 특정 행이 아닌 검사를 선택할 수 있습니다 의미한다. 그것은 조금 사납다. –

+0

@ Zhonghao.KevinXie, 작은 데모를 추가했습니다 - 원하는대로 할 수 있습니까? – MaxU

+0

그것은 작동합니다. 내 업데이트를 참조하십시오, 거기에 목록에 두 항목이있는 경우 하나를 선택하는 효율적인 방법입니다. 내 실제 데이터에는 목록에 여러 항목이 있으므로 –

1

IIUC, @MaxU 방법은 최적의, 나는 생각한다.

그러나이 시도 할 수 있습니다 :

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

출력 :

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

감사합니다. 도움이 되긴하지만, @MaxU가 먼저 답한대로, 나는 그를 쳤다. –