用 NBA 数据在 Pandas 中打造三双列

joh*_*mux 2 python boolean pandas

我遇到了在 pandas 中创建一种非常特殊的布尔列的问题。我正在处理 NBA 数据,我想为球员何时获得三双创建一个专栏。这段代码的工作原理:

james_harden['trip_dub'] = (james_harden['points'] >= 10) & (james_harden['rebounds' >= 10) & (james_harden['assists'] >= 10)

james_harden['trip_dub'] = james_harden['trip_dub'].map(lambda x: 1 if x == True else 0)
Run Code Online (Sandbox Code Playgroud)

然而三双可以通过得分、篮板和助攻来实现...得分、篮板和盖帽...篮板、盖帽和助攻...等等

我想知道是否可以编写代码来检查总共五列中的三列的任何组合是否大于或等于 10...

那么,如果我有 a、b、c、d、e 列,我该如何检查 if (a >= 10 and b>= 10 and c>=10) OR (a >= 10 and d>=10 and e >= 10)

jpp*_*jpp 5

假设你有5个统计数据,并且三双被定义为至少3个统计数据中至少有10分,你可以使用pd.DataFrame.sumlong axis=1

stats = ['points', 'rebounds', 'assists', 'blocks', 'steals']
james_harden['trip_dub'] = (james_harden[stats] >= 10).sum(1) >= 3
Run Code Online (Sandbox Code Playgroud)

这个想法是james_harden[stats] >= 10表示一个布尔数据框,并sum沿列调用它来计算每行True中值的数量。然后我们只需要检查每行中的数字是否大于或等于。3