2014-09-29 3 views
0

에서 원하지 않는 문구를 제거하는지도를 적용, 나는 특정 조건에 따라 내 DF에서 세포를 제거 할이지금 DF (팬더, 파이썬 3)

Words    Words1 
Little Red   Red Apple 
Cracker Barrel  Wood Grain 
Far Away Man  Flat Rate Shipping 

같은 DF이 경우 특정 단어 같은 문구에 같이 나타날 수 없습니다.

예 : "Flat"이 "Shipping"과 같은 문구에 있고 "Far"가 "Man"과 같은 문구에있는 곳에 다음 DF에서 셀을 제거합니다. 이런 식으로 놀아 왔지만 작동하지 않습니다 ...

Words.where(Words.applymap(lambda x: 'Flat' and 'Shipping' in x)) 

아이디어가 있으십니까?

답변

0

"셀 제거"란 무엇을 의미합니까? 네가 행을 바로 제거한다는 뜻인가? 그러면 행 단위로 고려할 것이므로 apply이됩니다.

In [8]: def pred(x): 
    c1 = ('Far' in x[0]) and ('Man' in x[0]) 
    c2 = ('Flat' in x[1]) and ('Shipping' in x[1]) 
    ...:  return c1 and c2 

In [9]: df.apply(pred, axis=1) 
Out[9]: 
0 False 
1 False 
2  True 
dtype: bool 

그래서 당신은 정규식으로 str.match 방법을 사용하는 것이 더 빠를 수 있습니다

In [10]: df[~df.apply(pred, axis=1)] 
Out[10]: 
      Words  Words1 
0  Little Red Red Apple 
1 Cracker Barrel Wood Grain 

당신의 기준과 일치하는 행을 삭제할 수 있습니다.

+0

불행히도 팬더를 사용하고 있는데이 메서드를 사용하면 다음과 같은 오류가 발생합니다. IndexError : (인덱스 '범위를 벗어남', '인덱스 0에서 발생했습니다') – user3682157

+0

왜 그런 오류가 발생했는지 알아 냈습니다. '0'을 쓰면 – user3682157

+0

'DF = DF.applymap (람다 x : x는 str (x)가 아닌 경우 x.replace ('$', '')) 또는 'DF = DF.applymap (람다 x : 람다 x : str (x)에서 '%'가 아닌 x 다른 경우 x.replace ('%', ''))' –