美文网首页腾讯算法大赛
腾讯广告算法大赛之——Python 时间戳→次日日期

腾讯广告算法大赛之——Python 时间戳→次日日期

作者: Neural_PDE | 来源:发表于2019-05-10 11:41 被阅读146次

    很多时候我们需要统计第二天的内容,那么如何由时间戳得到第二日的日期呢?

    以下是详细的代码:(后文还有简单易用的函数包奉上)

    import pandas as pd
    import time,datetime
    df=pd.DataFrame({"时间戳":[1301419600,1301419600]})
    
    ##时间戳(1529648412)列→(2018-06-22 06:20:12)
    df['时间']=pd.to_datetime(df['时间戳'],unit='s') #→(2018-06-22 06:20:12)
    
    ##(2018-06-22 06:20:12) → (2018-06-22)
    df=df.set_index('时间')    #把时间设置为索引(为了转化)
    df["当日日期"]=df.index.date  #转化为当日日期(2018-06-22)
    df=df.reset_index()
    
    ################(2018-06-22) → 年 月 日 → (20180622)
    df["年"]=df["当日日期"].map(str).str[0:4]
    df["月"]=df["当日日期"].map(str).str[5:7]
    df["日"]=df["当日日期"].map(str).str[8:]
    df["日期"]=df["年"]+df["月"]+df["日"]
    
    from datetime import datetime
    ###########任意时间格式→时间戳
    def time2stamp(cmnttime):   
        cmnttime=datetime.strptime(cmnttime,'%Y%m%d')#这里可以更改任意格式:'%Y-%m-%d %H:%M:%S'
        stamp=int(datetime.timestamp(cmnttime))
        return stamp
    df['前一天16点时间戳']=df['日期'].apply(time2stamp)
    
    ###########################检查时间戳对应的时间
    df['时间2']=pd.to_datetime(df['前一天16点时间戳'],unit='s')
    
    df=df.set_index('时间2')    #把时间设置为索引(为了转化)
    df["前一天日期"]=df.index.date  #转化为日期(2018-06-22)
    df=df.reset_index()
    df.head() 
    
    ##############给时间戳增减一天对应的数量(86400)
    df[['后一天16点时间戳']]=df.loc[:, ['前一天16点时间戳']] +86400*2
    ###########################检查时间戳对应的时间
    df['时间3']=pd.to_datetime(df['后一天16点时间戳'],unit='s')
    df.head(2)
    
    df=df.set_index('时间3')    #把时间设置为索引(为了转化)
    df["次日日期"]=df.index.date  #转化为日期(2018-06-22)
    df=df.reset_index()
    df.head() 
    
    ###############减少一些不必要的列###############
    df=df[['时间戳', '当日日期','前一天日期','次日日期']]
    df
    

    函数包及其用法

    ##### 调用次日日期函数包  #######
    def next_day(时间戳列):
        import pandas as pd
        import time,datetime
        df=pd.DataFrame() #定义一个函数内部df,否则会报错
        
        df['当日日期'] = 时间戳列.apply(lambda x:time.strftime("%Y-%m-%d",time.localtime(x))) 
    
        ################(2018-06-22) → 年 月 日 → (20180622)
        df["年"]=df["当日日期"].map(str).str[0:4]
        df["月"]=df["当日日期"].map(str).str[5:7]
        df["日"]=df["当日日期"].map(str).str[8:]
        df["日期"]=df["年"]+df["月"]+df["日"]
    
        from datetime import datetime
        ###########任意时间格式→时间戳
        def time2stamp(cmnttime):   
            cmnttime=datetime.strptime(cmnttime,'%Y%m%d')#这里可以更改任意格式:'%Y-%m-%d %H:%M:%S'
            stamp=int(datetime.timestamp(cmnttime))
            return stamp
        df['前一天16点时间戳']=df['日期'].apply(time2stamp)
    
        ###########################检查时间戳对应的时间
        df['时间2']=pd.to_datetime(df['前一天16点时间戳'],unit='s')
        df=df.set_index('时间2')    #把时间设置为索引(为了转化)
        df["前一天日期"]=df.index.date  #转化为日期(2018-06-22)
        df=df.reset_index()
    
        ##############给时间戳增减一天对应的数量(86400)
        df[['后一天16点时间戳']]=df.loc[:, ['前一天16点时间戳']] +86400*2
        ###########################检查时间戳对应的时间
        df['时间3']=pd.to_datetime(df['后一天16点时间戳'],unit='s')
    
    
        df=df.set_index('时间3')    #把时间设置为索引(为了转化)
        df["次日日期"]=df.index.date  #转化为日期(2018-06-22)
        df=df.reset_index()
        ###############减少一些不必要的列###############
        df=df[['当日日期','前一天日期','次日日期']]
        return df["次日日期"]
    
    ##### 调用前一日日期函数包  #######
    def pre_day(时间戳列):
        import pandas as pd
        import time,datetime
        df=pd.DataFrame() #定义一个函数内部df,否则会报错
        
        df['当日日期'] =时间戳列.apply(lambda x:time.strftime("%Y-%m-%d",time.localtime(x))) 
    
        ################(2018-06-22) → 年 月 日 → (20180622)
        df["年"]=df["当日日期"].map(str).str[0:4]
        df["月"]=df["当日日期"].map(str).str[5:7]
        df["日"]=df["当日日期"].map(str).str[8:]
        df["日期"]=df["年"]+df["月"]+df["日"]
    
        from datetime import datetime
        ###########任意时间格式→时间戳
        def time2stamp(cmnttime):   
            cmnttime=datetime.strptime(cmnttime,'%Y%m%d')#这里可以更改任意格式:'%Y-%m-%d %H:%M:%S'
            stamp=int(datetime.timestamp(cmnttime))
            return stamp
        df['前一天16点时间戳']=df['日期'].apply(time2stamp)
    
        ###########################检查时间戳对应的时间
        df['时间2']=pd.to_datetime(df['前一天16点时间戳'],unit='s')
        df=df.set_index('时间2')    #把时间设置为索引(为了转化)
        df["前一天日期"]=df.index.date  #转化为日期(2018-06-22)
        df=df.reset_index()
    
        ##############给时间戳增减一天对应的数量(86400)
        df[['后一天16点时间戳']]=df.loc[:, ['前一天16点时间戳']] +86400*2
        ###########################检查时间戳对应的时间
        df['时间3']=pd.to_datetime(df['后一天16点时间戳'],unit='s')
    
    
        df=df.set_index('时间3')    #把时间设置为索引(为了转化)
        df["次日日期"]=df.index.date  #转化为日期(2018-06-22)
        df=df.reset_index()
        ###############减少一些不必要的列###############
        df=df[['当日日期','前一天日期','次日日期']]
        return df["前一天日期"]
    

    函数包使用方法:

    ###首先创建一个时间戳列
    import pandas as pd
    df=pd.DataFrame({"时间戳":[1557532110,1557532110]})
    ###使用函数包
    df["次日日期"]=next_day(df["时间戳"])
    df["前日日期"]=pre_day(df["时间戳"])
    #获取当日日期
    df['当日日期'] = df['时间戳'] .apply(lambda x:time.strftime("%Y-%m-%d",time.localtime(x))) #此处任意格式%Y-%m-%d %H:%M:%S
    #展示结果
    df
    
    展示结果

    If you are interested in this topic.
    You can get in touch with me.
    18234056952(Tel WeChat qq)

    相关文章

      网友评论

        本文标题:腾讯广告算法大赛之——Python 时间戳→次日日期

        本文链接:https://www.haomeiwen.com/subject/rygooqtx.html