如何通过引用它在熊猫中的日期来提取

我有 df 喜欢跟随一个


customer  movement      date

A         buy      2019/5/4 

A        inquiry   2020/7/1

A        cancel    2020/8/1

B         buy      2019/6/1

B        cancel    2020/8/1

我想追查每个客户movement之前cancel


首先,分组依据customer


A         buy      2019/5/4 

A        inquiry   2020/7/1

A        cancel    2020/8/1

然后我想得到cancel date


A        cancel    2020/8/1

然后,我想previous movement在取消之前得到in 1 year。


customer movement date

A        inquiry  2020/7/1

A        cancel   2020/8/1

在那之后,我想在每个customers


所以我想要的结果如下


customer movement date

A        inquiry  2020/7/1

A        cancel   2020/8/1

B        cancel   2020/8/1

有什么办法可以做到这一点?这太复杂了,我无法处理这样的程序..


达令说
浏览 81回答 1
1回答

Qyouu

首先将列转换为日期时间并创建仅过滤行的cancel系列DataFrame.set_index:df['date'] = pd.to_datetime(df['date']) s = df[df['movement'].eq('cancel')].set_index('customer')['date']然后按Series.map年减去 1 年进行映射,并按indate过滤列的较少值:Series.ltboolean indexingdf = df[df['customer'].map(s.sub(pd.DateOffset(years=1))).lt(df['date'])]print (df)  customer movement       date1        A  inquiry 2020-07-012        A   cancel 2020-08-014        B   cancel 2020-08-01
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python