我有电子邮件活动数据捕获时间,目标和响应(用户是否打开链接) . 响应为1表示用户已打开内容 .
样本数据:
senddate userid content response
2016-06-01 100 50505 NaN
2016-06-01 100 50505 NaN
2016-06-01 100 50505 1
2016-06-01 100 50505 1
2016-06-02 100 50505 NaN
2016-06-02 100 50505 1
2016-06-02 100 50505 1
现在我想只保留行直到第一次响应 . 我想丢弃第一个响应后发生的任何行,我想在多个发送日期执行此操作 .
输出数据集:
senddate userid content response
2016-06-01 100 50505 NaN
2016-06-01 100 50505 NaN
2016-06-01 100 50505 1
2016-06-02 100 50505 NaN
2016-06-02 100 50505 1
如果有人可以帮助构建逻辑,那将非常感激 .
1 回答
您可以使用pandas来实现此目的:
如果'senddate'列上的
groupby
我们可以生成一个布尔掩码,将索引与first_valid_index
进行比较,这将创建一个多索引,其中第一个级别是日期,第二个级别是valud索引值,然后我们使用get_level_values
检索它们对于使用loc
的该级别和索引:以上细分: