簡體   English   中英

Python Pandas:是否有更快的方法根據標准拆分和重組DataFrame?

[英]Python Pandas: Is There a Faster Way to Split and Recombine a DataFrame based on criteria?

我想基於特定列“ContactID”對此DataFrame進行分組,但如果組的列“PaymentType”不包含特定值,那么我想從DataFrame中刪除整個組。

我有這樣的事情:

UniqueID = data.drop_duplicates('ContactID')['ContactID'].tolist()
OnlyRefinance=[]
for i in UniqueID:
    splits = data[data['ContactID']==i].reset_index(drop=True)
    if any(splits['PaymentType']==160):
        OnlyRefinance.append(splits)
OnlyRefinance = pd.concat(OnlyRefinance)

這有效,但它非常慢,我想知道是否有更快的方法來實現這一目標。

您可以使用groupby.filter另一個選項:

data.groupby("ContactID").filter(lambda g: (g.PaymentType == 160).any())

這只會保留PaymentType包含160的組。

您可以通過以下方式輕松完成此操作

to_drop = data.loc[data['PaymentType'] == 160, 'ContactID'].unique()
data[~data['ContactID'].isin(to_drop)]

因此,首先過濾掉不滿足條件的所有行,並獲取我們想要刪除的唯一聯系ID

然后將這些傳遞給isin並使用~反轉掩碼,這將刪除ContactID在此數組中的所有行

暫無
暫無

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

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