2013-05-23 3 views
1

파이썬의 팬더 데이터 프레임에 간단한 쿼리 로그를 가져 왔으며 (이미지 참조), 주어진 쿼리를 포함하는 모든 행을 가장 효율적으로 추출하는 방법을 알고 싶습니다 '키워드'열에 포함 된 키워드입니다.Python에서 팬더 데이터 프레임에 대한 행 추출하기

데이터 프레임을 반복 할 수 있지만 배열/마스크를 사용하면 더 빠른 방법 일 수 있습니다.

도움을 주시면 감사하겠습니다.

enter image description here

+0

당신에게 키워드를 숫자로 표시 (당신이 제대로 dataframe에서 읽게?). 또한, 장래에 복사하여 붙여 넣을 수있는 데이터 프레임의 실제 코드 (이미지가 아닌)를 복사하여 붙여 넣기 만하면됩니다. –

답변

3

당신은 예를 들어, str.contains를 사용할 수 있습니다

In [1]: df = pd.DataFrame([['abc', 1], ['cde', 2], ['efg', 3]]) 

In [2]: df 
Out[2]: 
    0 1 
0 abc 1 
1 cde 2 
2 efg 3 

In [3]: df[0].str.contains('c') 
Out[3]: 
0  True 
1  True 
2 False 
Name: 0, dtype: bool 

In [4]: df[df[0].str.contains('c')] 
Out[4]: 
    0 1 
0 abc 1 
1 cde 2 
+0

이 Andy에게 감사드립니다. df [0] .str.contains ('c')가 NA/NaN을 반환 할 때 어떻게 대처해야합니까? – user7289

+1

'df [df [0] .str.contains ('c') == True]'를 사용하면 NaN을 처리해야합니다. :) –

+0

완벽한 감사합니다! – user7289

3
[3]: df = DataFrame(dict(A = ['foo','bar','bah','bad','bar'],B = range(5))) 

In [4]: df 
Out[4]: 
    A B 
0 foo 0 
1 bar 1 
2 bah 2 
3 bad 3 
4 bar 4 

In [5]: select = Series(['bar','bah']) 

In [6]: df[df.A.isin(select)] 
Out[6]: 
    A B 
1 bar 1 
2 bah 2 
4 bar 4 
+0

테이블을 붙여 넣지 않고 사과하는 것에 대해 감사드립니다. fieds misaligned - 데이터를 올바르게 가져 왔고 '키워드'열이 실제로 문자열을 포함하고 있는지 확인할 수 있습니다. 위의 제안 사항은 키워드 열의 전체 셀과 일치한다는 점에서 거의 드뭅니다. 그러나 하위 문자열과 어떻게 일치합니까? – user7289

+2

Andy의 답변에 해당 솔루션이 포함되어 있습니다. – Jeff

관련 문제