关于python:类型函数的Pandas过滤参数不可迭代

Pandas filtering argument of type function is not iterable

本问题已经有最佳答案,请猛点这里访问。

我在用Python来对付熊猫。

在网球比赛中,我希望按以下方式筛选数据:

  • 检查获胜者是否是某个玩家
  • 检查输家是否在指定的集合内

我试着用下面的方法

1
filtered_data = df[(df.winner == player) & (df.losser in desirable_opponents)]

其中,df是存储我的数据的数据帧对象。

我收到以下错误:

1
TypeError: argument of type 'function' is not iterable

我理解错误。但我还没有想出解决问题的办法。

如何进行筛选,使df.loser与多个值进行检查,而不是像df.winner==player这样的值?


你应该使用isin

1
filtered_data = df[(df.winner == player) & (df.losser.isin(desirable_opponents))]


还要考虑类似SQL的查询方法:

1
filtered_data = df.query("winner == @player and losser in @desirable_opponents")

其中,player是一个标量变量,desirable_opponents是一个类似数组的变量(list、1d数组、pandas.series等)。