我嘗試根據兩個條件(if
,else
)篩選我的熊貓數據框。只有if
聲明有效。 if
語句基於2個條件(logic1
和logic2
)保留(標記)我的DataFrame中的所有記錄。參見第4節根據列值從熊貓數據框中排除記錄
在else
發言,我想排除已標記(logic1
和logic2
)所有的ID,而無需創建一個額外的列表或遍歷每個記錄。有沒有辦法將所有這些記錄過濾掉而不將ID存儲在額外的列表中?
我只想使用過濾器功能,如果可能的話。目前我從第3部分獲得輸出。它是錯誤的,因爲id = 2
已被標記,但仍包含在輸出中。我需要的輸出部4中顯示。
代碼
logic1 = (potatoes['Desc'] == 'Bla2') & (potatoes['Value'] == True) & (potatoes['Enabled'] == True)
logic2 = (potatoes['Desc'].isin(['Bla8', 'Bla9'])) & (potatoes['Active'] == True) & (potatoes['Enabled'] == True)
if flagged:
potatoes_flagged = potatoes[logic1 | logic2]
return potatoes_flagged
else:
potatoes_not_flagged = potatoes[~logic1 & ~logic2]
return potatoes_not_flagged
1.輸入(馬鈴薯)
id | Desc | Active | Enabled | Value | [A LOT OF OTHER COLUMNS]
1 | Bla1 | 1 | 0 | 1 | [A LOT OF OTHER COLUMNS]
2 | Bla2 | 1 | 1 | 1 | [A LOT OF OTHER COLUMNS]
2 | Bla3 | 1 | 1 | 0 | [A LOT OF OTHER COLUMNS]
2 | Bla4 | 0 | 0 | 0 | [A LOT OF OTHER COLUMNS]
2 | Bla5 | 0 | 0 | 0 | [A LOT OF OTHER COLUMNS]
3 | Bla6 | 1 | 1 | 0 | [A LOT OF OTHER COLUMNS]
4 | Bla7 | 0 | 0 | 1 | [A LOT OF OTHER COLUMNS]
2.輸出爲標記(如果)(CORRECT )
id | Desc | Active | Enabled | Value | [A LOT OF OTHER COLUMNS]
2 | Bla2 | 1 | 1 | 1 | [A LOT OF OTHER COLUMNS]
3.輸出不標記(否則)(錯)
id | Desc | Active | Enabled | Value | [A LOT OF OTHER COLUMNS]
1 | Bla1 | 1 | 0 | 1 | [A LOT OF OTHER COLUMNS]
2 | Bla3 | 1 | 1 | 0 | [A LOT OF OTHER COLUMNS]
2 | Bla4 | 0 | 0 | 0 | [A LOT OF OTHER COLUMNS]
2 | Bla5 | 0 | 0 | 0 | [A LOT OF OTHER COLUMNS]
3 | Bla6 | 1 | 1 | 0 | [A LOT OF OTHER COLUMNS]
4 | Bla7 | 0 | 0 | 1 | [A LOT OF OTHER COLUMNS]
4.輸出需要未標記(正確)
id | Desc | Active | Enabled | Value | [A LOT OF OTHER COLUMNS]
1 | Bla1 | 1 | 0 | 1 | [A LOT OF OTHER COLUMNS]
3 | Bla6 | 1 | 1 | 0 | [A LOT OF OTHER COLUMNS]
4 | Bla7 | 0 | 0 | 1 | [A LOT OF OTHER COLUMNS]
我想你需要'土豆[〜(logic1&logic2)]',但是你的期望輸出是錯誤的? –
,因爲根據您的數據,id = 2永遠不會在此標記。 –
我不明白爲什麼'id = 2'永遠不會被標記,並且'〜logic1&〜logic2'似乎是正確的。 – orangetacos