Python 获取唯一行值的最大日期

Python 获取唯一行值的最大日期,python,python-3.x,pandas,Python,Python 3.x,Pandas,你好,我有这样的数据: campaign status d_cap date 2019-10-07 campaign_1 start 400 2019-10-13 campaign_2 start 400 2019-10-14 campaign_1 change 1000 2019-10-14 campaign_2 change 800 2019-11-10

你好,我有这样的数据:

              campaign  status  d_cap
date                                 
2019-10-07  campaign_1   start    400
2019-10-13  campaign_2   start    400
2019-10-14  campaign_1  change   1000
2019-10-14  campaign_2  change    800
2019-11-10  campaign_1    stop      0
2019-11-12  campaign_2  change   2000
所需输出:

              campaign  status  d_cap
date                                 
2019-11-10  campaign_1    stop      0
2019-11-12  campaign_2  change   2000

所以我想根据最长日期获得每个独特活动的最后状态和d_上限。我试图用for循环来解决这个问题,但我认为这不是最好的解决方案

如果我理解正确,您需要:

group = pdf.groupby(["date", "campaign"]).agg({"status": "last", "d_cap": "last"}).reset_index()
# Get indexes of the max date per group
idx = pdf.groupby(['campaign'])['date'].transform(max) == pdf['date']
# Filter the df
final = pdf[idx]

如果我理解正确,您需要:

group = pdf.groupby(["date", "campaign"]).agg({"status": "last", "d_cap": "last"}).reset_index()
# Get indexes of the max date per group
idx = pdf.groupby(['campaign'])['date'].transform(max) == pdf['date']
# Filter the df
final = pdf[idx]

到目前为止你尝试了什么?到目前为止你尝试了什么?谢谢你的回答,但这并不是我想要的。在您的示例中,您在所有类别中获得了最大命运(在我的示例活动中),但我需要得到的是每个活动名称的最大日期。活动\u 1最大日期可以不同于活动\u 2最大日期。首先使用每个组的最大日期进行筛选。明白了。我将编辑我的答案。我会得到每个小组的最长日期谢谢你的回答,但这不是我想要的。在您的示例中,您在所有类别中获得了最大命运(在我的示例活动中),但我需要得到的是每个活动名称的最大日期。活动\u 1最大日期可以不同于活动\u 2最大日期。首先使用每个组的最大日期进行筛选。明白了。我将编辑我的答案。我将得到每组的最长日期