【发布时间】:2019-03-15 15:15:19
【问题描述】:
我有一个基于用户输入的最小值和最大值的可选 kwargs(总共 8 个)的函数。
例如GR_min, GR_max, GR_N_min, GR_N_max, Hi_min, Hi_max 等...其中数据框列是GR、GR_N、Hi 等...
我希望数据框过滤给定的最小值和最大值,但如果在函数调用中未给出一个或多个值,则将默认最小值-最大值设置为的最小值-最大值列。
例如一些伪代码:
df = pd.DataFrame({'GR': [1, 2, 3, 4, 2, 3],
'GR_N': [0.8, 0, 1, 0.6, 0.9, 1], 'Hi':[3, 6, 2, 5, 22, 7]})
得到我:
GR GR_N Hi
0 1 0.8 3
1 2 0.0 6
2 3 1.0 2
3 4 0.6 5
4 2 0.9 22
5 3 1.0 7
我想要一个做这样的事情的函数:
def picker(data, **kwargs):
data_filtered = data[data['GR'].between(GR_min, GR_max) &
data['GR_N'].between(GR_N_min, GR_N_max) &
data['Hi'].between(Hi_min, Hi_max)]
return data_filtered
调用后有输出:
picker(data=df, GR_min=2, GR_max=3, Hi_min=1, Hi_max=6)
GR GR_N Hi
1 2 0.0 6
2 3 1.0 2
除了显式调用数据框的每一列之外,我们使用 **kwargs 本身进行过滤。
有什么办法吗?
【问题讨论】:
标签: python python-3.x pandas dataframe keyword-argument