删除 pandas 行基于 2 列组合的条件

Drop pandas rows based condition of 2 column combination

我有一个 pandas table 有 2 列,月份和年份。

Month   Year
1       2020
2       2020
3       2020
4       2020
5       2020
6       2020
7       2020
8       2020
9       2020
10      2020
11      2020
12      2020
1       2021
2       2021
3       2021
4       2021
5       2021

我想在此示例中删除特定月份 2020 年 1 月 (1/2020)。

但是,我所做的是删除月份中包含 1 的所有行和年份中包含 2020 的所有行。

#Dataframe
foo = pd.DataFrame({'Month':[1,2,3,4,5,6,7,8,9,10,11,12,1,2,3,4,5],'Year':[2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2020,2021,2021,2021,2021,2021]})

#What I have tried:
foo[(foo.Month != 1) & (foo.Year != 2020)]

#Output:
Month   Year
2       2021
3       2021
4       2021
5       2021

如何删除特定的月份和年份组合?

做“不与”而不是“不与不”

foo[~((foo.Month == 1) & (foo.Year == 2020))]

试试吧。

foo[-((foo.Month == 1) & (foo.Year == 2020))]

您可以对不等式使用 any

df[df[['Month','Year']].ne((1,2020)).any(1)]