your programing

특정 열에 특정 문자열이 포함된 판다 데이터 프레임에서 행을 삭제하는 방법은 무엇입니까?

lovepro 2023. 6. 11. 20:42
반응형

특정 열에 특정 문자열이 포함된 판다 데이터 프레임에서 행을 삭제하는 방법은 무엇입니까?

저는 파이썬에서 매우 큰 데이터 프레임을 가지고 있으며 특정 열 안에 특정 문자열이 있는 모든 행을 삭제하고 싶습니다.

예를 들어, "XYZ" 문자열이 부분 문자열로 포함된 모든 행을 데이터 프레임의 C열에 삭제하려고 합니다.

.drop() 메서드를 사용하여 효율적으로 구현할 수 있습니까?

Panda에는 벡터화된 문자열 연산이 있으므로 원하지 않는 문자열이 포함된 행만 필터링할 수 있습니다.

In [91]: df = pd.DataFrame(dict(A=[5,3,5,6], C=["foo","bar","fooXYZbar", "bat"]))

In [92]: df
Out[92]:
   A          C
0  5        foo
1  3        bar
2  5  fooXYZbar
3  6        bat

In [93]: df[~df.C.str.contains("XYZ")]
Out[93]:
   A    C
0  5  foo
1  3  bar
3  6  bat

문자열 제약 조건이 하나의 문자열이 아닌 경우 다음을 사용하여 해당 행을 삭제할 수 있습니다.

df = df[~df['your column'].isin(['list of strings'])]

위의 명령은 목록의 요소를 포함하는 모든 행을 삭제합니다.

이것은 정확한 문자열을 비교하려는 경우에만 작동합니다.열 문자열에 목록의 문자열이 포함되어 있는지 확인하려는 경우에는 작동하지 않습니다.

목록과 비교하는 올바른 방법은 다음과 같습니다.

searchfor = ['john', 'doe']
df = df[~df.col.str.contains('|'.join(searchfor))]

코드가 약간 수정되었습니다.na=False를 지정하면 빈 값을 건너뜁니다.그렇지 않으면 단항 ~: float에 대한 TypeError: bad 피연산자 유형 오류가 발생할 수 있습니다.

df[~df.C.str.contains("XYZ", na=False)]

원본: 유형 오류: 단항 ~: float에 대한 잘못된 피연산자 유형

new_df = df[df.C != 'XYZ']

참조: https://chrisalbon.com/python/data_wrangling/pandas_dropping_column_and_rows/

아래 코드는 모든 행의 목록을 제공합니다.

df[df['C'] != 'XYZ']

위 코드의 값을 데이터 프레임에 저장하기 위해 :-

newdf = df[df['C'] != 'XYZ']

모든 NaN을 삭제하지 않으려는 경우

df[~df.C.str.contains("XYZ") == True]

언급URL : https://stackoverflow.com/questions/28679930/how-to-drop-rows-from-pandas-data-frame-that-contains-a-particular-string-in-a-p

반응형