我的目标是选择最接近月底的日期。例如,如何选择"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