Есть две проверки, одна проверка различий в днях, а другая проверка суммы всегда больше, чем 100, используя all
, затем обе ситуации удовлетворены, мы выбираем идентификатор.
s=df.groupby('customerId').agg({'Date':lambda x : (x.iloc[0]-x.iloc[-1]).days==-1,'Amount_Spent':lambda x : (x>100).all()}).all(1)
newdf=df.loc[df.customerId.isin(s.index),]
newdf
Out[1242]:
customerId Date Amount_Spent
0 123 2018-01-01 500
2 123 2018-01-02 300
Повторное использование groupby
+ agg
для получения необходимого формата
newdf.groupby('customerId').agg({'Date':['first','last'],'Amount_Spent':'sum'})
Out[1244]:
Date Amount_Spent
first last sum
customerId
123 2018-01-01 2018-01-02 800