(Python)选择最接近月末的日期



我的目标是选择最接近月底的日期。例如,如何选择"2021-01-29"、"2021-02-26"?(有什么掩蔽方法可用?(

import pandas as pd
df=pd.DataFrame({'date': ['2021-01-28', '2021-01-29', '2021-02-25','2021-02-26']})
date
0  2021-01-28
1  2021-01-29
2  2021-02-25
3  2021-02-26

您可以按月份进行分组,并获得日期时间的最大值:

df['date'] = pd.to_datetime(df['date'])
df = df.groupby(df['date'].dt.to_period('m')).max()
print (df)
date
date              
2021-01 2021-01-29
2021-02 2021-02-26

或者使用DataFrameGroupBy.idxmax按最大date进行索引,然后按DataFrame.loc:选择值

df['date'] = pd.to_datetime(df['date'])
df = df.loc[df.groupby(df['date'].dt.to_period('m'))['date'].idxmax()]
print (df)
date
1 2021-01-29
3 2021-02-26

或者先排序,然后通过Series.duplicated:得到最后一个重复行

df['date'] = pd.to_datetime(df['date'])
df = df.sort_values('date')
df = df[~df['date'].dt.to_period('m').duplicated(keep='last')]
print (df)
date
1 2021-01-29
3 2021-02-26

最新更新