我有一個函式,它提供滿足某些給定條件(或一系列條件)的行的索引。
def some_function(df, a, b, c, d):
return df.index[df["A"].eq(a) & df["B"].eq(b) & df["C"].eq(c) & df.eq(d)]
現在,如果值不存在,我想忽略特定條件。
df.index[df["A"].eq(a) & df["B"].eq(b) & df["C"].eq(c) & (df["D"] if D == None else df["D"].eq(d)]
但是,上述條件總是回傳一個空串列。似乎缺乏條件評估會df["D"]干擾最終結果。
是否可以使用Pandas(不撰寫兩個單獨的查詢)有條件地評估條件?如果是這樣,我該怎么做?
uj5u.com熱心網友回復:
您可以在變數中創建掩碼的第一部分,然后使用簡單的if陳述句更新掩碼:
def some_function(df, a, b, c, d):
mask = df["A"].eq(a) & df["B"].eq(b) & df["C"].eq(c)
if d != None:
mask &= df["D"].eq(d)
return df.index[mask]
您也可能會使用您最初的嘗試,而不是df["D"] if ...使用True if ...:
def some_function(df, a, b, c, d):
return df.index[df["A"].eq(a) & df["B"].eq(b) & df["C"].eq(c) & (True if d == None else df["D"].eq(d))]
# ^^^^ Replaced df["D"] with True
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/362523.html
