时间戳转日期

pd.to_datetime(时间戳, unis='ms')的话会不准确。

import datetime
# 时间戳转为日期
obat['时间'] = (obat.time/1000).apply(datetime.datetime.fromtimestamp)


在这里插入图片描述原来是字符串格式,要改为datetime格式

from datetime import datetime
import pandas as pd
方法一:df['date'].astype('datetime64')
tran['date'] = tran['date'].astype('datetime64[ns]')
方法二:pd.to_datetime
tran['date'] = pd.to_datetime(tran['date']) # date转为时间格式
方法三:datetime.strptime(x,'%Y-%m-%d')

缺点:耗时太长

tran['date'] = tran['date'].apply(lambda x: datetime.strptime(x,'%Y-%m-%d'))
转为日期格式之后可以进行日期索引,日期加减:

在这里插入图片描述

在这里插入图片描述
对下面这种情况,用pd.to_datetime(format='%Y%m%d')设置参数format
在这里插入图片描述

groupbyresample

想要求每个用户的平均观看时长

a = iv.groupby('用户id')[['cTime']].resample(rule='W', on='cTime', how='count').groupby(level=0).mean()  # 运行时间较长

在这里插入图片描述

a.groupby(level=0).mean().rename(columns={'cTime':'视频平均观看时长'})

在这里插入图片描述
level=0 以第一列索引来分组求视频观看时长的均值

时间戳转日期格式
import time
pl['上次直播时间'] = pl.上次直播时间.map(time.localtime).map(lambda x: time.strftime("%Y--%m--%d %H:%M:%S", x)).astype('datetime64')

报错:TypeError: Only valid with DatetimeIndex, TimedeltaIndex or PeriodIndex, but got an instance of 'Index'
a = iv.groupby('用户id')[['cTime']].resample(rule='W', on='cTime', how='count').groupby(level=0).mean()  # 运行时间较长
a.groupby(level=0).mean().rename(columns={'cTime':'视频平均观看时长'})
  1. 也许是因为cTime这一列有缺失值
  2. 也许是因为cTime这一列的格式不是日期格式,改过来就好了
python 把秒转为时分秒

参考:python秒转化为分钟-python时间时分秒与秒数的互相转换

m, s = divmod(data['second'], 60)

h, m = divmod(m, 60)

print ("%02d:%02d:%02d" % (h, m, s))
获取当天所在的周一日期
data1['weekday'] = data1['day'].apply(lambda x: x - datetime.timedelta(days=x.weekday()))
时间偏移
datetime.timedelta(days=11)

偏移两年

data['trade_date']+pd.tseries.offsets.DateOffset(years=2)
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐