我有一个数据框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
Date
和Time
类型datetime64
和object
。我需要按照5分钟和Mobile_No
的时间间隔对此数据框进行分组。我的预期输出是最后两行应计为一行(相同Mobile_No
且时间间隔小于5分钟)。
有没有办法实现这个目标?
首先,我考虑将Date
和Time
列合并为时间戳,然后将其用作索引并应用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'
答案 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。