python - 根据 2 个条件从数据框中删除行

标签 python python-3.x pandas dataframe

我有一个 Python 数据框,其中包含多个赛季的 NHL 球员数据。我正在尝试删除 2018-2019 年未参加比赛的所有球员行。例如,如果乔·琼斯在 2018-2019 赛季打球,我想保留他那个赛季以及他参加过的任何其他赛季的数据。

我认为代码看起来像这样:

for player in data.players:
      if data['Year'] == '2018-2019':
          save player's name
      else:
          remove player's data

例如,我的数据框是这样的

Year         Player     TM     GP
2018-2019    Joe        MTL    78
2017-2018    Joe        MTL    82
2016-2017    Joe        MTL    80
2017-2018    Jim        STL    76
2016-2017    Jim        STL    82
2018-2019    Jack       MIN    82

结果是:

Year         Player     TM     GP
2018-2019    Joe        MTL    78
2017-2018    Joe        MTL    82
2016-2017    Joe        MTL    80 
2018-2019    Jack       MIN    82

最佳答案

groupby.filter

df.groupby('Player').filter(lambda d: '2018-2019' in {*d.Year})

        Year Player   TM  GP
0  2018-2019    Joe  MTL  78
1  2017-2018    Joe  MTL  82
2  2016-2017    Joe  MTL  80
5  2018-2019   Jack  MIN  82

同样的事情,但使用 values 数组而不是 set

df.groupby('Player').filter(lambda d: '2018-2019' in d.Year.values)

用 Numpy 过度设计

m = df.Year.values == '2018-2019'
i, u = pd.factorize(df.Player)
a = np.zeros(len(u), bool)
np.logical_or.at(a, i, m)

df[a[i]]

        Year Player   TM  GP
0  2018-2019    Joe  MTL  78
1  2017-2018    Joe  MTL  82
2  2016-2017    Joe  MTL  80
5  2018-2019   Jack  MIN  82

关于python - 根据 2 个条件从数据框中删除行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56083369/

相关文章:

python - 将多张图像连接成一张

python - Pandas 用 df.drop 删除行不起作用

python - 如何解压 Flask Sqlalchemy 中使用的枚举值?

python - 如何创建一个迭代列表并同时在数据框中创建新列的函数?

python - 为什么两组操作之间没有顺序不变性?

python - 我可以将图像嵌入到 pykml 生成的 KML 数据中吗?

python - 在 lion 上为 Python 安装 MySQLdb 包

python - 如何寻址列最小值的行

python - 使用 Python hidapi 打开具有多种用途的设备

python - psutil.cpu_percent() 函数如何工作?