首页 > 解决方案 > Python Dataframe:获取上个月存在的工作日数?

问题描述

我有df与专栏day_name。我正在尝试获取上个月存在的 week_days 数?

我正在尝试获取上个月存在的 week_days 数。

例如:有4 Fridays5 Thrusdays在四月

df

            day_name            
    0       Friday          
    1       Sunday          
    2       Thursday            
    3       Wednesday          
    4       Monday          

根据python一天:

    import calendar
    year = 2020
    month = 4
    day_to_count = calendar.WEDNESDAY
    matrix = calendar.monthcalendar(year,month)
    num_days = sum(1 for x in matrix if x[day_to_count] != 0)

我如何在数据框或任何建议中使用它?

预期产出

            day_name     last_months_count      
    0       Friday          4
    1       Sunday          4
    2       Thursday        5    
    3       Wednesday       5   
    4       Monday          4

标签: pythonpandasnumpydataframe

解决方案


上个月:

year, month = 2020, 4

start,end = f'{year}/{month}/1', f'{year}/{month+1}/1'

# we exclude the last day
# which is first day of next month
last_month = pd.date_range(start,end,freq='D')[:-1]

df['last_month_count'] = df['day_name'].map(last_month.day_name().value_counts())

输出:

    day_name  last_month_count
0     Friday                 4
1     Sunday                 4
2   Thursday                 5
3  Wednesday                 5
4     Monday                 4

奖励:以编程方式提取上个月:

from datetime import datetime
now = datetime.now()

year, month = now.year, now.month

# first month of the year
if month == 1:
    year, month = year-1, 12

推荐阅读