我有一个 Dataframe 如下:
df = pd.DataFrame({'Key':[1,1,1,1,2,2,2,4,4,4,5,5],
'Activity':['A','A','H','B','B','H','H','A','C','H','H','B'],
'Date':['2022-12-03','2022-12-04','2022-12-06','2022-12-08','2022-12-03','2022-12-06','2022-12-10','2022-12-03','2022-12-04','2022-12-07','2022-12-03','2022-12-13']})
我需要计算在“Activity”==“H”之前发生的每个“Key”的活动,如下所示:
所需输出
我的方法
1.按关键字和日期对df排序(样本输入已排序)
1.删除每组中“H”活动之后出现的行,如下所示:
- Groupby df.groupby(['关键字','活动']).count()
是否有更好的方法,如果没有,然后帮助我在代码中删除发生在每个组中的“H”活动之后的行。
先谢了!
3条答案
按热度按时间fcg9iug31#
您可以将
H
日期"返回"到前面的每一行,以便在比较中使用。首先在新列中标记每个
H
日期:向后填充每组的新列:
一个二个一个一个
然后可以选择
Date
在End
之前的行要生成最终表单,可以使用
.pivot_table()
hgqdbh6s2#
试试这个:
输出:
vfh0ocws3#
您可以尝试: