python 我尝试在数据框中创建一个新列,其中包含月份范围内的最大值,但条件是获取前3个月的最大值

alen0pnh  于 2023-01-24  发布在  Python
关注(0)|答案(1)|浏览(122)

这是数据格式日期列显示的第一个条目的日期,我试图得到在前3个月错过的到期日的最大值,我有30个月的数据,我需要在每个ID的前3个月错过的最大到期日

zbdgwd5y

zbdgwd5y1#

考虑您的 Dataframe ,如图所示:

import pandas as pd
df = pd.DataFrame({
    'ID':[100,100,100,100,100,
          101,101,101,101, 101],
    'Entry Date':['2020-04-10','2020-05-10','2020-06-10','2020-07-10','2020-08-10',
                  '2020-07-25','2020-08-25','2020-09-25','2020-10-25','2020-11-25'],
    'Due missed':[0,0,7,0,5,
                  9,1,5,7,10]
})
df['Entry Date'] = df['Entry Date'].apply(pd.to_datetime)

您需要做的是对 Dataframe 进行排序,使前3个月位于每个ID的顶部:

df.sort_values(['ID', 'Entry Date'], inplace=True)

然后,您可以按ID分组并选择前3行(使用head(3)),然后选择这三行中的最大值(使用['Due missed'].max()):

df.groupby('ID').apply(lambda x: x.head(3)['Due missed'].max())

相关问题