답변:
부울 데이터가 아닌 것처럼 작동하는 반전 (~) 연산자를 사용할 수 있습니다.
new_df = df[~df["col"].str.contains(word)]
, 어디 new_df
RHS에서 사본을 반환합니다.
또한 정규 표현식을 허용합니다 ...
위의 방법으로 ValueError가 발생하면 데이터 유형이 혼합되어 있기 때문일 수 있습니다 na=False
.
new_df = df[~df["col"].str.contains(word, na=False)]
또는,
new_df = df[df["col"].str.contains(word) == False]
df[~df.col.str.contains(word)]
단어와 일치하는 제외 행이있는 원래 데이터 프레임의 복사본을 반환합니다.
not (~) 기호에도 문제가 있었으므로 다른 StackOverflow 스레드와 다른 방법이 있습니다 .
df[df["col"].str.contains('this|that')==False]
df[df["col1"].str.contains('this'|'that')==False and df["col2"].str.contains('foo'|'bar')==True]
? 감사!
df = df[~df["col"].str.contains('\|')]
위의 Andy가 권장하는 명령을 사용하기 전에 NULL 값을 제거해야했습니다. 예를 들면 :
df = pd.DataFrame(index = [0, 1, 2], columns=['first', 'second', 'third'])
df.ix[:, 'first'] = 'myword'
df.ix[0, 'second'] = 'myword'
df.ix[2, 'second'] = 'myword'
df.ix[1, 'third'] = 'myword'
df
first second third
0 myword myword NaN
1 myword NaN myword
2 myword myword NaN
이제 명령을 실행하십시오.
~df["second"].str.contains(word)
다음과 같은 오류가 발생합니다.
TypeError: bad operand type for unary ~: 'float'
dropna () 또는 fillna ()를 사용하여 NULL 값을 먼저 제거하고 문제없이 명령을 다시 시도했습니다.
~df["second"].astype(str).str.contains(word)
를) 강제로 변환하는 데 사용할 수도 있습니다 str
. 참조 stackoverflow.com/questions/43568760/...
답변이 이미 게시 되었기를 바랍니다.
여러 단어 를 찾고 dataFrame에서 그 단어를 무효화 하기 위해 프레임 워크를 추가하고 있습니다.
여기 'word1','word2','word3','word4'
= 검색 할 패턴 목록
df
= 데이터 프레임
column_a
= DataFrame df의 열 이름
Search_for_These_values = ['word1','word2','word3','word4']
pattern = '|'.join(Search_for_These_values)
result = df.loc[~(df['column_a'].str.contains(pattern, case=False)]
re.complies
. 내가 검색을 과도하게 맞추는 것처럼 보이고 그것은 당신이 말한대로입니다