首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python:使用时间戳列将时间段分配给行

问python:使用时间戳列将时间段分配给行
EN

Stack Overflow用户
提问于 2017-08-16 04:44:03
回答 2查看 952关注 0票数 2

我有一个数据集,其中包含一些数字观察值,以及它的开始和结束时间。我正在尝试为每个观察值分配一个bin,每个bin是5分钟,如果事务在该时间间隔内开始,则应分配该bin。(我在熊猫中探索了重采样选项,但在那里我找不到一种方法来保留观察的独特属性,例如数量)

代码语言:javascript
复制
data
id     start               end                 amt count
1004 2017-07-01 08:02:30 2017-07-01 10:02:30 250   1
1004 2017-07-01 08:09:30 2017-07-01 09:03:35 250   1
1006 2017-07-01 09:54:50 2017-07-01 10:26:31 50    1

timebins
0 00:00:00
1 00:05:00
2 00:10:00

期望的输出将是,

代码语言:javascript
复制
id       start           end                 amt count    bin 
1004 2017-07-01 08:02:30 2017-07-01 10:02:30 250   1      08:00
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-08-16 06:39:37

由于数据可以直接用于日期时间格式,因此我使用dt来访问时间

代码语言:javascript
复制
def makebins(x):
    x=pd.to_datetime(x)
    return str(x.hour) + ":" + str(int(x.minute/5)*5)

df["bins"] = df['start'].apply(makebins)
票数 3
EN

Stack Overflow用户

发布于 2017-08-16 05:09:06

您可以拼接开始时间戳字符串并向下舍入到最接近的5分钟间隔:

代码语言:javascript
复制
def binify(timestamp):
    h, m, s = timestamp.split()[1].split(':')
    m = int(m)
    m = m - (m % 5) 
    return h + ':' + str(m).zfill(2)

df['bin'] = [binify(x) for x in df['start']]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45701246

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档