我们有一个包含dtype四个功能的数据框; num,num,object和float。
我想在这种情况下过滤数据:
1. f ['g'] = <53
2. f ['h'] minmax(1,67)..该值应介于用户指定的值之间。
3. f ['k] =='y'
4.f ['l'] minmax(22,77)..该值应介于用户指定的值之间。
我想编写一个名为“ Datafilter”的函数,该函数可以进行多次过滤,而且我们应该能够根据将来的需求添加过滤器并更改条件。
这是一个数据框。
f= pd.DataFrame({'g':[1,2,3,45,33,57,23,53,56,79],
'h':[12,344,5,78,98,95,43,56,32,23],
'k':['y','y','n','y','n','n','y','n','y','n'],
'l':[1.0,2.0,22.0,244.0,43.0,34.0,78.0,5.0,77.0,97.0]})
我是一个初学者,所以我一次可以应用一个过滤器。
>>>[IN] t=f.copy()
>>>[IN] t=t[ t['g']<= 53]
>>>[IN] t=t[t['h'].between(12,98) & t['l'].between(2.0,78.0)]
>>>[IN] t=t[t['k']=='n']
>>>[IN] print(t)
>>>[OT]
g h k l
4 33 98 n 43.0
7 53 56 n 5.0
该功能应该是通用的,即可以重用,并且将来也应该能够处理其他过滤器。
答案 0 :(得分:1)
就像
一样,只需使用&
运算符一次应用所有过滤器
t=t[(t['h'].between(12,98)) & (t['l'].between(2.0,78.0))]
。
您必须将每个过滤器放在圆括号中,否则会出现错误。
答案 1 :(得分:0)
您可以简单地执行以下操作。
from typing import *
import pandas as pd
f= pd.DataFrame({'g':[1,2,3,45,33,57,23,53,56,79, 12],
'h':[12,344,5,78,98,95,43,56,32,23, 33],
'k':['y','y','n','y','n','n','y','n','y','n', 'y'],
'l':[1.0,2.0,22.0,244.0,43.0,34.0,78.0,5.0,77.0,97.0,66]})
def Datafilter(df, h_minmax : List[int], l_minmax : List[int]) -> pd.DataFrame:
return df[(df["g"] <= 53) & (df["h"].between(*h_minmax)) & (df["l"].between(*l_minmax)) & (df["k"] == "y")]
print(Datafilter(f, [1,67], [22,77]))
那会给你。
g h k l
10 12 33 y 66
``