python:使用timestamp列为行分配时间容器

python:使用timestamp列为行分配时间容器,python,pandas,datetime,Python,Pandas,Datetime,我有一个数据集,其中包含一些数值观测值,以及它的开始和结束时间。我试图为每个观察分配一个bin,每个bin为5分钟,如果事务在该时间间隔内启动,则应分配该时间。(我在熊猫身上探索了重采样选项,但在那里我找不到一种方法来保留观察的独特属性,例如数量) 期望的产出是 id start end amt count bin 1004 2017-07-01 08:02:30 2017-07-01 10:02:30 250 1

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

期望的产出是

id       start           end                 amt count    bin 
1004 2017-07-01 08:02:30 2017-07-01 10:02:30 250   1      08:00

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

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']]

考虑到数据可以直接以datetime格式使用,我使用dt来访问时间

def makebins(x):
    x=pd.to_datetime(x)
    return str(x.hour) + ":" + str(int(x.minute/5)*5)

df["bins"] = df['start'].apply(makebins)
def makebins(x):
    x=pd.to_datetime(x)
    return str(x.hour) + ":" + str(int(x.minute/5)*5)

df["bins"] = df['start'].apply(makebins)