Pandas将Series / DataFrame限制为一列

时间:2016-02-19 19:42:13

标签: pandas

我想要一个函数df_out(df_in,val_min,val_max),它通过选择一列中的值在定义的范围内的行来从另一个系列/数据框生成一个排序的系列/数据帧。 例如,如果df_in看起来像这样:

Name   Age

John  13

Jack  19

Sylvia 21

Anna 14

Carlos 15

Vladimir 30

Gustav 28

Amie 24

我希望df_out(18,25)看起来像这样:

Name Age

Jack 19

Sylvia 21

Amie 24

最多" pythonic"这样做的方法?谢谢!

2 个答案:

答案 0 :(得分:2)

为什么在本地轻松完成功能时使用它?

>>> df[df.Age.between(18, 25)]
     Name  Age
1    Jack   19
2  Sylvia   21
7    Amie   24

>>> df[df.Age.between(19, 24, inclusive=False)]
     Name  Age
2  Sylvia   21

答案 1 :(得分:1)

在DataFrame df中,使用列NameAge后,您只需使用

df[(min_val <= df.Age) & (df.Age <= max_val)]

请注意,由于运算符优先级,您需要在上面的表达式中使用看似冗余的括号。

您可以将其创建为如下函数:

def df_limited(df, min_val, max_val):
    return df[(min_val <= df.Age) & (df.Age <= max_val)]