我有一个数据集,看起来像这样:
| 姓名|日期|现况|
| - ------|- ------|- ------|
| 约翰|二○二二年十一月一日|是的|
| 简|二○二二年十一月一日|没有|
| 艾米丽|二○二二年十一月二日|没有|
| 约翰|二○二二年十一月二日|没有|
| 艾米丽|二〇二二年十一月三日|是的|
| 简|二〇二二年十一月三日|没有|
| 艾米丽|2022年11月4日|没有|
我想检查并计算按日期顺序Status
为“Yes”的名称。因此,如果Name
在前一个日期(或行,因为数据已按日期升序排序)为Status
“Yes”,则将其计为1。
我读过关于pandas.dataframe.shift
,pandas.dataframe.isin
,pandas.dataframe.equals
的内容,但我不认为这是我想要检查前一行值的函数。
预期输出为:
2(约翰、艾米丽)
任何人都可以帮助我建立的代码吗?谢谢你提前。
1条答案
按热度按时间3zwtqj6y1#
您可以使用
groupby()
-〉transform()
来处理按每个人分组的记录块。按日期对记录进行排序,并检查前一个日期的状态是否为“是”。收集所有带有肯定检查标志的结果。在每行之前添加注解以解释逻辑。
输出: