簡體   English   中英

如何使用 function 過濾數據? - Python

[英]How to filter data using an function? - Python

我正在嘗試做一些簡單的事情,只需使用 function 從 pandas 調用 loc 然后將其打印在 excell 表中,但我不知道為什么 output 是空的。

def update_output(farol,dias,prod,officer,anal,coord):
    df_f=df.loc[(df['FarolAging'].isin([farol])) & (df['Dias Pendentes'].isin([dias])) & (df['Produto'].isin([prod])) & (df['Officer'].isin([officer])) & (df['Analista'].isin([anal])) & (df['Coordenador'].isin([coord]))]
    df_f.to_excel('C:\\Users\\brechtl\\Downloads\\File.xlsx', index=False)

update_output('vermelho', 'Até 20 dias','','Alexandre Denardi','Guilherme De Oliveira Moura','Anna Claudia')

編輯:正如評論中的一位朋友所問,我創建了一個與我正在使用的類似的 dataframe

df = pd.DataFrame(np.array([["Vermelho","Verde","Amarelo"],["20 dias","40 dias","60 dias"],["Prod1","Prod1","Prod2"],
["Alexandre Denardi","Alexandre Denardi","Lucas Fernandes"],["Guilherme De Oliveira Moura","Leonardo Silva","Julio Cesar"],
["Anna Claudia","Bruno","Bruno"]]), columns=["FarolAging","Dias Pendentes","Produto","Officer","Analista","Coord"])

調用function時第三個參數沒有傳值,是誤傳還是故意的? 這可能導致沒有數據,因為所有過濾條件都在“AND”中,意味着所有條件都必須為真。

基於您希望將可選值傳遞給 function 那么我認為您需要在選擇中使用 function。 下面的 model 代碼顯示了它是如何工作的(使用 == 進行比較)。

def test(row, val1, val2):
    if val1 == '':
        val1 = row['col1']
    if val2 == '':
       val1 = row['col2']
    if row['col1'] == val1 and row['col2'] == val2:
        return True
    else: 
        return False
    
def func(x1, x2):
    df_f = df.loc[df.apply((lambda x: test(x, x1, x2)), axis = 1)]
    return df_f


print(func('', 'dd'))

  col1 col2
0   aa   dd

print(func('aa', 'dd'))

  col1 col2
0   aa   dd

print(func('xx', 'dd'))

給空 dataframe

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM