繁体   English   中英

Python Pandas datetime64 列按月最后一个工作日过滤

[英]Python Pandas datetime64 column filter by last business day in month

我想按一个月的最后一个工作日过滤下面的df;

所以结果应该只显示 2022-08-31 和 2022-07-29,因为它们是几个月中的最后一个工作日。

请记住,在编写解决方案时,原始 df 有数千行。 谢谢!

import pandas as pd
d = pd.to_datetime(['2022-08-01','2022-08-02','2022-08-03','2022-08-04','2022-08-31',
                   '2022-07-01','2022-07-02','2022-07-03','2022-07-04','2022-07-29'])
df = pd.DataFrame()
df['date'] = d
print(df)

        date
0 2022-08-01
1 2022-08-02
2 2022-08-03
3 2022-08-04
4 2022-08-31
5 2022-07-01
6 2022-07-02
7 2022-07-03
8 2022-07-04
9 2022-07-29

您可以使用pandas.date_rangeBM频率,然后使用pandas.DataFrame.loc进行过滤。

list_bm = pd.date_range(df['date'].min(), df['date'].max(), freq='BM').tolist()

out = df.loc[df['date'].isin(list_bm)]

注意'BM'代表商业月结束频率

print(out)

        date
4 2022-08-31
9 2022-07-29

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM