多个过滤器Python Data.frame

时间:2017-01-27 15:03:39

标签: python pandas dataframe

我对python很陌生。我试图像在R中那样过滤data.frame中的行。

sub_df = df[df[main_id]==3]

有效,但

df[df[main_id] in [3,7]]

给我错误

  

"系列的真值是含糊不清的"

您能否建议我使用正确的语法来编写类似的选项?

3 个答案:

答案 0 :(得分:3)

您可以使用pandas isin功能。这看起来像这样:

import pandas as pd

df = pd.DataFrame({'A': [1, 2, 3], 'B': ['a', 'b', 'f']})
df[df['A'].isin([2, 3])]

,并提供:

   A  B
1  2  b
2  3  f

答案 1 :(得分:1)

df[df[main_id].apply(lambda x: x in [3, 7])]

答案 2 :(得分:1)

又一个解决方案:

In [60]: df = pd.DataFrame({'main_id': [0,1, 2, 3], 'x': list('ABCD')})

In [61]: df
Out[61]:
   main_id  x
0        0  A
1        1  B
2        2  C
3        3  D

In [62]: df.query("main_id in [0,3]")
Out[62]:
   main_id  x
0        0  A
3        3  D