날짜 열의 값이 날짜 목록에있을 때 팬더 데이터 프레임에서 행을 삭제하고 싶습니다. 다음 코드는 작동하지 않습니다.
a=['2015-01-01' , '2015-02-01']
df=df[df.datecolumn not in a]
다음과 같은 오류가 발생합니다.
ValueError : Series의 진실 값이 모호합니다. 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()
사용할 수 있지만 결과를 단일 부울 값으로 줄이려는 경우에만 유용합니다. 그러나 이것은 외부 목록에 대해 Series의 모든 값의 멤버 자격을 테스트하고 결과를 그대로 유지하는 것입니다 (즉, 원래 DataFrame을 슬라이스하는 데 사용되는 Boolean Series). ).
이에 대한 자세한 내용은 Gotchas 에서 읽을 수 있습니다 .