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)
这有效,但它非常慢,我想知道是否有更快的方法来实现这一目标.
您可以使用的另一个选项groupby.filter:
data.groupby("ContactID").filter(lambda g: (g.PaymentType == 160).any())
Run Code Online (Sandbox Code Playgroud)
这只会保留PaymentType包含160的组.