2017-04-19 67 views
1

我使用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 ==播放器?

回答

3

你应该使用isin

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

谢谢!我知道必须有一种方法来解决这个问题,使用少于10个额外的字符。 –

2

考虑也类似SQL的query方法:

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

其中player是一个标量和desirable_opponents是一个类似数组的变量(列表,一维数组, Pandas.Series等)

+1

谢谢你的答案。我决定选择另一个作为真正的答案,因为它接近我的原始设计 –

+0

@DanielHernandez,当然! :-) – MaxU

相关问题