ProgramingTip

"not in"조건에 따라 데이터 프레임에서 행 삭제

bestdevel 2020. 11. 30. 19:22
반응형

"not in"조건에 따라 데이터 프레임에서 행 삭제


날짜 열의 값이 날짜 목록에있을 때 pandas 데이터 프레임에서 행을 삭제하고 싶습니다. 다음 코드는 작동하지 않습니다.

a=['2015-01-01' , '2015-02-01']

df=df[df.datecolumn not in a]

다음과 같은 오류가 발생합니다.

ValueError : 시리즈의 진실 값이 모호합니다. a.empty, a.bool (), a.item (), a.any () 또는 a.all ()을 사용하십시오.


사용할 수 있습니다 .pandas.Dataframe.isin

pandas.Dateframe.isin각 요소가 목록에 있는지 여부에 따라 부울 값을 반환합니다 a. 그런 다음이를 사용 하여 ~변환 True하여 변환 False합니다.

import pandas as pd

a = ['2015-01-01' , '2015-02-01']

df = pd.DataFrame(data={'date':['2015-01-01' , '2015-02-01', '2015-03-01' , '2015-04-01', '2015-05-01' , '2015-06-01']})

print(df)
#         date
#0  2015-01-01
#1  2015-02-01
#2  2015-03-01
#3  2015-04-01
#4  2015-05-01
#5  2015-06-01

df = df[~df['date'].isin(a)]

print(df)
#         date
#2  2015-03-01
#3  2015-04-01
#4  2015-05-01
#5  2015-06-01


다음을 사용할 수 있습니다 .Series.isin

df = df[~df.datecolumn.isin(a)]

메시지는 오류 사용할 수 있다고 제안 all()하거나 any()사용할 수 있지만 결과를 one-부울 값으로 줄이려는 경우에만 유용합니다. 그러나 모든 외부 목록에 대해 시리즈의 값의 멤버십을 테스트하고 결과를 그대로 유지하는 것입니다 (즉, 원래 DataFrame을 사용하는 데 사용되는 부울 시리즈). ).

이에 대한 자세한 내용은 Gotchas 에서 읽을 수 있습니다 .

참고 URL : https://stackoverflow.com/questions/27965295/dropping-rows-from-dataframe-based-on-a-not-in-condition

반응형