我想要一个函数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"这样做的方法?谢谢!
答案 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
中,使用列Name
和Age
后,您只需使用
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)]