programing

"상태 아님" 조건을 기준으로 데이터 프레임에서 행 삭제

yellowcard 2023. 6. 29. 19:56
반응형

"상태 아님" 조건을 기준으로 데이터 프레임에서 행 삭제

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

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

df=df[df.datecolumn not in a]

다음 오류가 발생합니다.

값 오류:시리즈의 참 값은 모호합니다.a.empty, a.boole(), a.item(), a.any() 또는 a.all()을 사용합니다.

사용할 수 있습니다.

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

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

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

오류 메시지는 다음과 같습니다.all()또는any()사용할 수 있으며 결과를 단일 부울 값으로 줄이려는 경우에만 유용합니다.그러나 이것은 외부 목록에 대해 시리즈의 모든 값의 멤버쉽을 테스트하고 결과를 그대로 유지하려는 것이 아닙니다(즉, 원래 데이터 프레임을 슬라이스하는 데 사용되는 부울 시리즈).

이에 대한 자세한 내용은 Gotchas에서 확인하실 수 있습니다.

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

반응형