批量删除两列日期间隔为N的数值列

日常在处理数据中,对于日期段的异常值,可能是由于财务部门在合并某些账目,譬如16%和17税票的合并,会导致在短期内出现极度异常值,这样的极度异常值是人为的且是合理的,所以需要删除。附代码如下:

'''
比较两个日期是否相同
'''

#计算两个日期相差天数,自定义函数名,和两个日期的变量名。
def Caltime(date1,date2):
    #%Y-%m-%d为日期格式,其中的-可以用其他代替或者不写,但是要统一,同理后面的时分秒也一样;可以只计算日期,不计算时间。
    #date1=time.strptime(date1,"%Y-%m-%d %H:%M:%S") 
    #date2=time.strptime(date2,"%Y-%m-%d %H:%M:%S")
    date1=time.strptime(date1,"%Y-%m-%d")
    date2=time.strptime(date2,"%Y-%m-%d")
    #根据上面需要计算日期还是日期时间,来确定需要几个数组段。下标0表示年,小标1表示月,依次类推...
    #date1=datetime.datetime(date1[0],date1[1],date1[2],date1[3],date1[4],date1[5])
    #date2=datetime.datetime(date2[0],date2[1],date2[2],date2[3],date2[4],date2[5])
    date1=datetime.datetime(date1[0],date1[1],date1[2])
    date2=datetime.datetime(date2[0],date2[1],date2[2])
    #返回两个变量相差的值,就是相差天数
    return date2-date1

        
data['购电起始日期']=data['购电起始日期'].astype(str)
data['购电截止日期']=data['购电截止日期'].astype(str)   
def f1_6(data,col1,col2):
    col_name=col1+'_diff'
    lst=[]
    for i in range(len(data)):
        m=data[col1].iloc[i]
        n=data[col2].iloc[i]
        lst.append(Caltime(m,n))
    data[col_name]=lst
    return data
f1_6(data,'购电起始日期','购电截止日期')
data.rename(columns={'购电起始日期_diff':'购电起始日期差值'},inplace=True)
#一列timedelta数据转换为int或float
data['购电起始日期差值']=(data['购电起始日期差值'] / np.timedelta64(1, 'D')).astype(int) 
data=data[data['购电起始日期差值']!=0]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值