1. ホーム
  2. python

[解決済み] not in "条件に基づきデータフレームから行を削除する [duplicate]...

2022-05-12 17:51:45

質問

日付カラムの値が日付のリストにあるときに、pandas dataframeから行を削除したいです。以下のコードではうまくいきません。

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 の中にあるかどうかによって真偽値を返す。次に、これを反転して ~ を変換して TrueFalse に変更し、その逆も同様です。

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