基于用户输入将多个过滤器应用于数据框的pythonic方法

v_coder12

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

我想创建一个函数,在其中可以系统地过滤数据帧,以便可以应用多个过滤器。

例如

def filter_data(df, filter_col, filter_val, filter_amount):
    if filter_amount == 1:
        df = df[df.filter_col[0] == filter_val[0]]
    if filter_amount == 2:
        df = df[(df.filter_col[0] == filter_val[0]) & (df.filter_col[1] == filter_val[1])]

    etc

其中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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将过滤器应用于表的Pythonic方法

熊猫-创建多个过滤器并应用于数据框

Ionic将多个过滤器应用于列表

将多个过滤器应用于表 reactjs

将片段过滤器应用于多个源

使用过滤器将数据框应用于不同变量

将多个过滤器应用于pandas DataFrame或Series的有效方法

将熊猫过滤器应用于数据框可得到充满NaN的数据框

使用字典将多个字符串包含过滤器应用于熊猫数据框

根据条件将过滤器应用于数据框

巴特沃斯过滤器应用于熊猫数据框的一列

查询数据框,但仅将过滤器应用于列值不是NaN的行

如何转换此数据框并将过滤器应用于单元格?

使用熊猫将过滤器列表应用于来自列表的数据框

如何创建将不同过滤器应用于数据框的循环

将货币过滤器应用于angularjs的输入字段

需要将多个过滤器应用于JSON数据

JDI将类过滤器应用于多个类

将多个过滤器应用于Google Charts仪表盘

Elasticsearch:如何将多个过滤器应用于相同的值?

在Laravel 5中将多个过滤器应用于表

使用JavaScript将多个过滤器类别应用于<li>的列表

将过滤器应用于列表并显示数据

将特定通道应用于ffmpeg过滤器

如何将dplyr过滤器应用于数据帧列表?

将开始和结束时间作为过滤器应用于数据帧

如何将Delphi ADOTable过滤器应用于日期数据类型

将中值过滤器应用于2轴的数据

根据用户输入(VBA)应用多个过滤器