簡體   English   中英

如何在python中做一個復雜的過濾器

[英]How to do a complicated filter in python

我正在嘗試基於一列進行過濾。 例如,每當我看到它有account_no 1111時,我想刪除該事務

輸入

Date        Trans   account_no
2017-12-11  10000   1111
2017-12-11  10000   1112
2017-12-11  10000   1113
2017-12-11  10001   1111
2017-12-11  10002   1113

期望的輸出

Date        Trans   account_no
2017-12-11  10002   1113

編輯:

這與運算符鏈接不同,因為您正在處理重復/條件過濾器

通過使用issubset + transform

df[~df.groupby('Trans').account_no.transform(lambda x : set([1111]).issubset(x))]
Out[1658]: 
         Date  Trans  account_no
4  2017-12-11  10002        1113

你可以分兩步完成。 首先使用.loc找到所有具有等於1111的account_no Trans值。 然后用isin()選擇所有其他交易

df[~df.Trans.isin(df.loc[df.account_no == 1111,'Trans'])]

         Date  Trans  account_no
4  2017-12-11  10002        1113

您可以使用.loc根據系列進行過濾。

def complex_filter_criteria(x):
    return x != 1111
df.loc[df['account_no'].apply(complex_filter_criteria)]

df['account_no'].apply(complex_filter_criteria)將為account_no列中的每個條目返回一系列True/False評估。 然后,當您將其傳遞給df.loc ,它將返回一個數據df.loc ,該數據df.loc僅包含與系列中的True評估相對應的行。

在此輸入圖像描述

暫無
暫無

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

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