如何按列表删除数据框中的多行?

How can I drop multiple rows in my dataframe by list?

我想根据值列表删除一堆行。具体来说,我有一份棒球运动员从 1999 年到 2021 年的统计数据列表。如果一名球员在 1999 年打过球,我想删除他们所有的行。例如,如果他们在 1999 年、2000 年和 2001 年比赛,我想删除所有这三行。

我使用 df[df['Season'].isin([1999])]['Name'] 确定玩家列表,它生成了一个数据帧(可以变成一个列表如果需要的话)。

我现在如何获取原始数据框并根据该名称列表删除所有行?

以下代码删除所有参加特定赛季的球员;

原DF:

    Season  Player
0   2000    B
1   1993    B
2   1997    C
3   1994    A
4   1997    C
5   2000    F
6   1998    D
7   1997    C
8   1999    E

使用下面的代码,我们可以消除行

a = df[df['Season'].isin([2000])]['Player'].values
df = df.loc[~df['Player'].isin(a), :]
df

输出:

Season  Player
2   1997    C
3   1994    A
4   1997    C
6   1998    D
7   1997    C
8   1999    E