将多个过滤条件应用于 Pandas 和 Python 上的数据框

时间:2021-05-03 05:34:20

标签: python pandas dataframe

我的 csv 文件有 3 列(Q、W、E),我想通过过滤这 3 列来生成结果

我有一个有效的伪造代码,但是当搜索或过滤器的列或条件增加到 5 或 6 时会出现问题,这将使每个条件的代码大小加倍。所以我需要一些更简单的东西。

因此,对于 4 个过滤条件,if 语句的数量为 15,对于 5,则为 31,对于 6,则为 63。

这是我的代码现在的样子

def filter_1(q, table):
    return (table.loc[(table['Q Column']  == q)])

def filter_2(w, table):
    return (table.loc[table['W Column']  == int(w)])

def filter_3(e, table):
    return (table.loc[categ['E Column']  == e])


q = input()
w = input()
e = input()

if bool(q) == False:
    q = 0
else:
    q = int(q)
if bool(w) == False:
    w = 0
else:
    w = int(w)
if bool(e) == False:
    e = 0
else:
    e = int(e)

if w > 0 and q > 0 and e == 0:     #12
    spooled = filter2( w, filter1(q, QWE_table)) 
elif w > 0 and q == 0 and e == 0:  #1
    spooled = filter1(q, QWE_table) 
elif w == 0 and q > 0 and e == 0:  #2
    spooled = filter1(w, QWE_table) 
elif w == 0 and q == 0 and e > 0: #3
    spooled = filter_3(e, QWE_table) 
elif w > 0 and q == 0 and e > 0:  #13
    spooled = filter3( e, filter1(q, QWE_table)) 
elif w == 0 and q > 0 and e > 0:  #23
    spooled = filter3( e, (filter2( w, QWE_table))) 
elif w > 0 and q > 0 and e > 0:   #123
    spooled = filter3( e, (filter2( w, filter1(q, QWE_table)))) 
else:
    spooled = table

谢谢。

0 个答案:

没有答案