删除 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)]
我有一个 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)]