新增文章
文章标题
分类
C#
云星空
K3 BOS
K3 功能
用友
Oracle
python
SQL
MySql
PHP
HTML
script
windows
Access
影视后期
财务
服务
生活
内容
import pandas as pd import numpy as np import datetime as dt df = pd.read_excel('./日期问题.xlsx') # 导入数据 df['action_date'] = pd.to_datetime(df['action_date']) # 将日期列转成日期格式 df # 查看数据 #dt模块可轻松获取日期基本属性 df['年']=df['action_date'].dt.year df['季度']=df['action_date'].dt.quarter df['月']=df['action_date'].dt.month df['日']=df['action_date'].dt.day df['星期几']=df['action_date'].dt.dayofweek df['周次']=df['action_date'].dt.week df['时']=df['action_date'].dt.hour df['分']=df['action_date'].dt.minute df['秒']=df['action_date'].dt.second df.head() #计算一年中的第几天 #通过对天, 时,分的四则运算将日期转为序列数值数据 df['一年中的第几天']=df['action_date'].dt.dayofyear df['一天中的第几分钟']=df['action_date'].apply(lambda x: x.minute + x.hour*60) df['一天中的第几个10分钟'] = df['时'] * 6 + df['分'] // 10 df['数值'] = df["action_date"].values.astype(np.int64) // 10 ** 9 df['年月'] = df['action_date'].dt.year * 100 + df['action_date'].dt.month # 转年月(数值) #判断日期是否闰年,年初年末,月初月末… #apply df['是否闰年'] = df['action_date'].apply(lambda x: x.is_leap_year) # 是否闰年 df['是否月初'] = df['action_date'].apply(lambda x: x.is_month_start) # 是否月初 df['是否月末'] = df['action_date'].apply(lambda x: x.is_month_end) # 月末 df['是否季节初'] = df['action_date'].apply(lambda x: x.is_quarter_start) # 季度初 df['是否季节末'] = df['action_date'].apply(lambda x: x.is_quarter_end) # 季度末 df['是否年初'] = df['action_date'].apply(lambda x: x.is_year_start) # 年初 df['是否年尾'] = df['action_date'].apply(lambda x: x.is_year_end) # 年内末 df['是否周末'] = df['action_date'].apply(lambda x: True if x.dayofweek in [5, 6] else False) # 是否周末 df.loc[((df['时'] >= 8) & (df['时'] < 22)), '是否营业时间'] = True #字符串时段,季节 period_dict ={ 23: '深夜', 0: '深夜', 1: '深夜', 2: '凌晨', 3: '凌晨', 4: '凌晨', 5: '早晨', 6: '早晨', 7: '早晨', 8: '上午', 9: '上午', 10: '上午', 11: '上午', 12: '中午', 13: '中午', 14: '下午', 15: '下午', 16: '下午', 17: '下午', 18: '傍晚', 19: '晚上', 20: '晚上', 21: '晚上', 22: '晚上', } df['时间段']=df['时'].map(period_dict) # 一年中的哪个季度 season_dict = { 1: '春季', 2: '春季', 3: '春季', 4: '夏季', 5: '夏季', 6: '夏季', 7: '秋季', 8: '秋季', 9: '秋季', 10: '冬季', 11: '冬季', 12: '冬季', } df['季节']=df['月'].map(season_dict) #for循环快捷计算 time_features = ['year', 'month', 'quarter', 'week', 'day', 'dayofweek', 'dayofyear'] dtype = np.int16 for time_feature in time_features: df[time_feature] = getattr(df['action_date'].dt, time_feature).astype(dtype) #时间间隔天数计算 # 设置初始的时间 2021-06-01 base_time = datetime.datetime.strptime('2021-06-01', '%Y-%m-%d') df['时间差'] = df['action_date'].apply(lambda x: x-base_time).dt.days # 计算时间差 df['间隔天数'] = list(map(lambda x: x.days, pd.to_datetime('today') - df['action_date'])) # 距离今天天数
返回
保存