如何在pandas中按时间间隔对数据帧进行分组?

时间:2016-01-06 08:56:57

标签: python pandas group-by dataframe

我有一个数据框df

            Date        Mobile_No      Amount            Time    .....
121526  2014-12-24        739637       200.00           9:44:00
121529  2014-12-28        199002       500.00           9:49:44
121531  2014-12-10        813770       100.00           9:50:41
121536  2014-12-09        178795       100.00           9:52:15
121537  2014-12-09        178795       100.00           9:52:24

DateTime类型datetime64object。我需要按照5分钟和Mobile_No的时间间隔对此数据框进行分组。我的预期输出是最后两行应计为一行(相同Mobile_No且时间间隔小于5分钟)。

有没有办法实现这个目标?

首先,我考虑将DateTime列合并为时间戳,然后将其用作索引并应用pd.TimeGrouper(),但这似乎无法正常工作

>>>import datetime as dt
>>>import pandas as pd
...

>>> df.apply(lambda x: dt.datetime.combine(x['Date'], dt.time(x['Time'])), axis=1)  

给出错误

'an integer is required', u'occurred at index 121526'  

1 个答案:

答案 0 :(得分:1)

如果您遇到问题,是否可以转换为字符串,连接字符串并解析to_datetime中的格式:

df['Time']=df['Time'].astype(str)
df['Date']=df['Date'].astype(str)
df['Timestamp'] = df['Date'] +' ' + df['Time']
df.index = pd.to_datetime(df['Timestamp'], format='%Y/%m/%d %H:%M:%S')

从那里你可以根据需要重新采样或我们pd.Grouper。