类型函数的Pandas过滤参数不可迭代

时间:2017-04-19 16:53:23

标签: python database pandas

我正在使用PyThon和Pandas。

在网球比赛中,我想以下列方式过滤我的数据:

  • 检查获胜者是否为特定玩家
  • 检查输家是否在指定的集合

我正在尝试以下列方式

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

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

我收到以下错误:

TypeError: argument of type 'function' is not iterable

我理解错误。但我还没有找到解决问题的方法。

我怎样才能进行过滤,以便针对许多值检查df.loser,而不是像df.winner == player那样?

2 个答案:

答案 0 :(得分:4)

你应该使用isin

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

答案 1 :(得分:3)

还要考虑类似SQL的query方法:

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

其中player是标量变量,desirable_opponents是类似数组的变量(列表,1D数组,Pandas.Series等)