我有一个按日期排序的数据框,可以进行分组。我的目标是按变量(人)进行分组,确定每个组(人)的最大值(重量),然后删除所有在最大值(日期)之后的行。
以下是数据示例:
我认为值得注意的是,开始日期可能不连续,并且最大值可能出现在不同的时间。我的想法是找到每个组的最大值,获取该组最大值所在的月份编号,然后丢弃任何月份编号大于最大重量月份编号的行。到目前为止,我已经能够按组获取最大值,但无法基于此进行比较。如果需要编辑/提供更多信息,请告诉我,我在这里没有发布过很多问题!感谢您的帮助,如果我的格式/问题不清楚,对不起。
以下是数据示例:
df = pd.DataFrame({'Person': 1,1,1,1,1,2,2,2,2,2],'Date': '1/1/2015','2/1/2015','3/1/2015','4/1/2015','5/1/2015','6/1/2011','7/1/2011','8/1/2011','9/1/2011','10/1/2011'], 'MonthNo':[1,2,3,4,5,1,2,3,4,5], 'Weight':[100,110,115,112,108,205,210,211,215,206]})
Date MonthNo Person Weight
0 1/1/2015 1 1 100
1 2/1/2015 2 1 110
2 3/1/2015 3 1 115
3 4/1/2015 4 1 112
4 5/1/2015 5 1 108
5 6/1/2011 1 2 205
6 7/1/2011 2 2 210
7 8/1/2011 3 2 211
8 9/1/2011 4 2 215
9 10/1/2011 5 2 206
以下是我想要的结果:
Date MonthNo Person Weight
0 1/1/2015 1 1 100
1 2/1/2015 2 1 110
2 3/1/2015 3 1 115
5 6/1/2011 1 2 205
6 7/1/2011 2 2 210
7 8/1/2011 3 2 211
8 9/1/2011 4 2 215
我认为值得注意的是,开始日期可能不连续,并且最大值可能出现在不同的时间。我的想法是找到每个组的最大值,获取该组最大值所在的月份编号,然后丢弃任何月份编号大于最大重量月份编号的行。到目前为止,我已经能够按组获取最大值,但无法基于此进行比较。如果需要编辑/提供更多信息,请告诉我,我在这里没有发布过很多问题!感谢您的帮助,如果我的格式/问题不清楚,对不起。