Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于用户输入将多个筛选器应用于数据帧的pythonic方法_Python_Pandas_Numpy_Dataframe_Pandas Groupby - Fatal编程技术网

基于用户输入将多个筛选器应用于数据帧的pythonic方法

基于用户输入将多个筛选器应用于数据帧的pythonic方法,python,pandas,numpy,dataframe,pandas-groupby,Python,Pandas,Numpy,Dataframe,Pandas Groupby,假设我有一个名人的数据框架,包括他们的年龄、种族、身高、行业等 我想创建一个可以系统地过滤数据帧的函数,这样就可以应用多个过滤器 e、 g 其中,filter_col是要根据其进行筛选的列的列表,filter_val也是值的列表,filter_amount是整数 我希望它是系统化的,这样对于任何过滤量,它都可以根据列表的值过滤数据集,而无需手动编码 帮助。因为过滤器执行and(&),所以这样做是有意义的: import pandas as pd def filter_data(df, filt

假设我有一个名人的数据框架,包括他们的年龄、种族、身高、行业等

我想创建一个可以系统地过滤数据帧的函数,这样就可以应用多个过滤器

e、 g

其中,filter_col是要根据其进行筛选的列的列表,filter_val也是值的列表,filter_amount是整数

我希望它是系统化的,这样对于任何过滤量,它都可以根据列表的值过滤数据集,而无需手动编码


帮助。

因为过滤器执行and(&),所以这样做是有意义的:

import pandas as pd

def filter_data(df, filter_col, filter_val, filter_amount):
    out = df.copy()
    for i in range(filter_amount):
        out = out[out[filter_col[i]] == filter_val[i]]
    return out

def main():
    x = pd.DataFrame({"Age": [12, 44, 23], "Ethnicity": ["White", "Black", "White"], "Height": [180, 182, 168]})
    #    Age Ethnicity  Height
    # 0   12     White     180
    # 1   44     Black     182
    # 2   23     White     168

    y = filter_data(x, ["Ethnicity", "Height"], ["White", 180], 1)
    #    Age Ethnicity  Height
    # 0   12     White     180
    # 2   23     White     168

    z = filter_data(x, ["Ethnicity", "Height"], ["White", 180], 2)
    #    Age Ethnicity  Height
    # 0   12     White     180

查看是否应该是这样的:
filtered\u df=[df[df[col]==val]用于filter\u vals中的val]
?当前代码将产生语法错误是的,我忘记了括号,现在添加了它们
import pandas as pd

def filter_data(df, filter_col, filter_val, filter_amount):
    out = df.copy()
    for i in range(filter_amount):
        out = out[out[filter_col[i]] == filter_val[i]]
    return out

def main():
    x = pd.DataFrame({"Age": [12, 44, 23], "Ethnicity": ["White", "Black", "White"], "Height": [180, 182, 168]})
    #    Age Ethnicity  Height
    # 0   12     White     180
    # 1   44     Black     182
    # 2   23     White     168

    y = filter_data(x, ["Ethnicity", "Height"], ["White", 180], 1)
    #    Age Ethnicity  Height
    # 0   12     White     180
    # 2   23     White     168

    z = filter_data(x, ["Ethnicity", "Height"], ["White", 180], 2)
    #    Age Ethnicity  Height
    # 0   12     White     180
filter_vals = [1, 2, 3]
filter_amount = 3

filtered_df = [df[df[col] == val] for val in filter_vals]