from pandas.tseries.offsets import CustomBusinessDay
def count_businessday(start_day,end_day):
b = CustomBusinessDay(holidays=['2020-04-06','2020-05-01','2020-05-04','2020-05-05','2020-06-25','2020-10-01',
'2020-10-05','2020-10-06','2020-10-07','2020-10-08'])
bus_day = pd.date_range(start=start_day, end=end_day, freq=b)
length = len(bus_day)
extra_work_day = ['2020-04-26','2020-05-09','2020-06-28','2020-09-27','2020-10-10']
extra_len = 0
dayday = Interval(start_day,end_day)
for i in extra_work_day:
if i in dayday:
extra_len = extra_len+1
return(length+extra_len-1)
if __name__=='__main__':
count_businessday(start_day,end_day)
sheet['工作日'] = sheet.apply(lambda x:count_businessday(x['出院时间'],x['归档日期']),axis=1)
sheet.head()
出现这个错误:
'<' not supported between instances of 'str' and 'Timestamp'
ermutuxia
2020-11-05
你好:比较运算用于数值之间的比较,如果你想比较两个Timestamp对象的话可以这样比较

import pandas as pd
a1=pd.Timestamp('2017-01-01T12')
b1=pd.Timestamp('2017-01-01T09')
c1=pd.Timestamp('2017-01-02T12')
print(a1>b1)
print(a1>c1)
ermutuxia
2020-11-05
好像这个性质还是等同于大于小于号,我是用之前的<= 表达式,出现'<' not supported between instances of 'str' and 'Timestamp'
ermutuxia
2020-11-05
import pandas as pd
data=pd.read_excel("D:\\360安全浏览器下载\\1604471191_544633.xlsx")
data["间隔月数"]=(data["end_time"].dt.year-data["lend_time"].dt.year)*12
+(data["end_time"].dt.month-data["lend_time"].dt.month)
wangxishi
2020-11-05
看了下你的数据了,你的数据情况比较简单,情况如下,起始日期和截止日期的day是一样的,这样的话算起来就会比较好算。

代码如下:
import pandas as pd
data=pd.read_excel("D:\\360安全浏览器下载\\1604471191_544633.xlsx")
data["间隔月数"]=(data["end_time"].dt.year-data["lend_time"].dt.year)*12+(data["end_time"].dt.month-data["lend_time"].dt.month)结果如下:

wangxishi
2020-11-05
两个日期变量相减只能得出间隔多少天,就需要定义一些规则,然后自己写函数,比如2020年2月29日减去2020年一月31日等于一个月,主要是因为每月天数不统一所以我知道的所有软件都没有提供这个函数
wangxishi
2020-11-04
show databases;
create database c1;
use c1;
DROP TABLE CUS;
create table Cus(
ORDERID INT PRIMARY KEY auto_increment,
CUSNAME varchar (10),
PRODUCTNAME VARCHAR (10),
PRODUCTPRICE INT,
ORDERDATE date
);
DESC CUS;
INSERT INTO CUS VALUES
(3012,'A','P001',100,'2020-6-1'),
(3013,'B','P002',78,'2020-6-2'),
(3014,'C','P003',123,'2020-6-3'),
(3015,'A','P004',98,'2020-6-1'),
(3016,'B','P005',45,'2020-6-2'),
(3017,'C','P001',100,'2020-6-3'),
(3018,'A','P005',45,'2020-6-3'),
(3019,'B','P004',98,'2020-6-1');
select * from cus;
-- 统计6月1号,2号每个Customer购买的产品总价。
select CUSNAME,ORDERDATE,SUM(PRODUCTPRICE) as 产品总价
from cus
where ORDERDATE='2020-6-1' or ORDERDATE='2020-6-2'
group by CUSNAME;
SUKI-ZY
2020-11-04