基于用户输入将多个筛选器应用于数据帧的pythonic方法
假设我有一个名人的数据框架,包括他们的年龄、种族、身高、行业等 我想创建一个可以系统地过滤数据帧的函数,这样就可以应用多个过滤器 e、 g 其中,filter_col是要根据其进行筛选的列的列表,filter_val也是值的列表,filter_amount是整数 我希望它是系统化的,这样对于任何过滤量,它都可以根据列表的值过滤数据集,而无需手动编码基于用户输入将多个筛选器应用于数据帧的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
帮助。因为过滤器执行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]