python - 如何将 unix 时间戳时间分成 10 分钟间隔?
问题描述
我有这样的数据,
ID datetime
0 2 2015-01-09 19:05:39
1 1 2015-01-10 20:33:38
2 1 2015-01-10 21:10:00
我已将此日期时间转换为 unix 时间戳
ID timestamp
0 2 1420830339
1 1 1420922018
2 1 1420924200
我想首先将 unix 时间戳转换为 EST 标准,然后将每一行分成 10 分钟的间隔。我需要一列来指示该行属于哪个 bin。
我的最短日期时间是 2015-01-01 00:00:00,我只有 2015 年 1 月 1 日到 31 日的数据。
如何使用 python 或 pandas 实现这一点。
解决方案
使用date_range
withcut
分箱 10 分钟:
df['datetime'] = pd.to_datetime(df['datetime'])
bins = pd.date_range('2015-01-01', '2015-02-01', freq='10T')
df['bins'] = pd.cut(df['datetime'], bins)
df['lab'] = pd.cut(df['datetime'], bins, labels=False)
df['bins_left'] = pd.IntervalIndex(pd.cut(df['datetime'], bins)).left
df['bins_right'] = pd.IntervalIndex(pd.cut(df['datetime'], bins)).right
df['bins_left_unix'] = df['bins_left'].to_numpy().astype(np.int64) // 10**9
df['bins_right_unix'] = df['bins_right'].to_numpy().astype(np.int64) // 10**9
print (df)
ID datetime bins lab \
0 2 2015-01-09 19:05:39 (2015-01-09 19:00:00, 2015-01-09 19:10:00] 1266
1 1 2015-01-10 20:33:38 (2015-01-10 20:30:00, 2015-01-10 20:40:00] 1419
2 1 2015-01-10 21:10:00 (2015-01-10 21:00:00, 2015-01-10 21:10:00] 1422
bins_left bins_right bins_left_unix bins_right_unix
0 2015-01-09 19:00:00 2015-01-09 19:10:00 1420830000 1420830600
1 2015-01-10 20:30:00 2015-01-10 20:40:00 1420921800 1420922400
2 2015-01-10 21:00:00 2015-01-10 21:10:00 1420923600 1420924200
推荐阅读
- windows - 在 Jenkinsfile 管道上禁用 cron
- python - AWS Lambda 函数 + Cloudwatch,如何将正确的参数传递给定时执行
- c++ - 没有 lpthread 的 Promise 中出现未知异常的原因
- reactjs - 是否有理由在 React Router 中使用 Link 而不是 NavLink?
- jackson - Spring Batch Oracle TIMESTAMP Jackson 序列化失败
- javascript - 如何让javascript提示问题一定次数
- html - 如何将自定义 css 添加到 github 页面
- azure - 如何将 blob 从 Azure 容器传输到 FTP 服务器/位置?
- android - 我在尝试登录时收到 PayPal 错误
- node.js - 我在客户端使用 next.js 并在服务器端使用 node.js 表达谁