Python Pandas:是否有更快的方法根据标准拆分和重组DataFrame?

Ril*_*Hun 3 python split dataframe pandas

我想基于特定列"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)
Run Code Online (Sandbox Code Playgroud)

这有效,但它非常慢,我想知道是否有更快的方法来实现这一目标.

Psi*_*dom 6

您可以使用的另一个选项groupby.filter:

data.groupby("ContactID").filter(lambda g: (g.PaymentType == 160).any())
Run Code Online (Sandbox Code Playgroud)

这只会保留PaymentType包含160的组.