Pandas函数输出不正确,看不出如何。oconus_days1 row=25应该是20,怎么了?

2024-06-16 10:53:31 发布

您现在位置:Python中文网/ 问答频道 /正文

代码:

forecast ['conus_days'] = np.where(forecast['Month']==forecast["conus_mth"],
                              (forecast['Start Date'] - forecast['start_month'].apply(us_bd)),
                               0)
forecast['conus_days']=forecast['conus_days'].dt.days
forecast ['conus_days1'] = np.where(forecast['Month']==forecast["conus_mth"],
                               forecast['end_month'] - forecast['Start Date'],
                               0)
forecast['conus_days1']=forecast['conus_days1'].dt.days

forecast['oconus_days'] = np.where(forecast['Month']==forecast['oconus_mth'],
                               (forecast['End Date'] - forecast['start_month']),
                               0)
forecast['oconus_days']=forecast['oconus_days'].dt.days

forecast['oconus_days1']= np.where(forecast['Month']== forecast["oconus_mth"],
                              (forecast['end_month']- forecast['End Date'].apply(us_bd)),0)

结果:

       Name      EID  Start Date   End Date      Country  year  Month  \
0       GP        123456 2019-08-01 2020-01-03  Afghanistan  2020      1   
1       MW       3456789 2019-09-22 2020-02-16        Conus  2020      1   
2       MH        456789 2019-12-05 2020-03-12        Conus  2020      1   
3       DR        789456 2019-09-11 2020-03-04         Iraq  2020      1   
4       JR        985756 2020-01-03 2020-05-06      Germany  2020      1   

   days_in_month start_month  end_month  working_days  conus_mth  oconus_mth  \
0             31  2020-01-01 2020-01-31            21          8           1   
1             31  2020-01-01 2020-01-31            21          9           2   
2             31  2020-01-01 2020-01-31            21         12           3   
3             31  2020-01-01 2020-01-31            21          9           3   
4             31  2020-01-01 2020-01-31            21          1           5   

   conus_days  conus_days1  oconus_days  oconus_days1  
0           0            0            2            25  
1           0            0            0             0  
2           0            0            0             0  
3           0            0            0             0  
4           1           28            0             0  

第0行,oconus_days1输出应该是20,而不是25

使用us_bd = CustomBusinessDay(calendar=USFederalHolidayCalendar())计算到日期之间的工作日数,不包括节假日和周末-与conus_days column=1相同,这是正确的。如果您查看函数np.where .... forecast['end_month'] - forecast['End Date'].apply(us_bd),输出应该是20


Tags: datenpwheredaysbdendusforecast