我已经进行了广泛的搜索,但还没有找到这样做的好方法。我有一个带有我自己的短信数据的 Pandas 数据框。它有“utctime”、“sender”、“recipient”和“message”列。我想要做的是按任意分钟时间段(例如 10 或 20 分钟)对其进行分组,然后在多年内查看我在一天中每个时间段发送的消息量。
数据的前几行看起来像这样,这又延长了 2 年:
utctime sender recipient message
0 2016-11-25 18:00:25.877000+00:00 Person1 Me message1
1 2016-11-25 18:50:58.694000+00:00 Person2 Me message2
2 2016-11-25 18:54:41.871000+00:00 Me Person2 message3
3 2016-11-25 18:54:58.583000+00:00 Person2 Me message4
4 2016-11-25 19:01:19.694000+00:00 Me Person2 message5
这样做的最佳方法是什么,以便我可以从 00:00 到 23:40 以 20 分钟为增量查看自己的短信频率?
到目前为止,我所做的是将时间折叠为一天的另一个功能:
def time_of_day(data, tz_info):
utctime = data.utctime.dt.tz_convert(tz_info)
data['timeofday'] = pd.to_datetime({'year': 2017,
'month': 1,
'day': 1,
'hour': utctime.dt.hour,
'minute': utctime.dt.minute,
'second': utctime.dt.second})
return data
然后我使用自定义石斑鱼分组:
sf = pytz.timezone('US/Pacific')
timedelta = '10min'
grouper = pd.Grouper(key='timeofday', freq=timedelta)
data = time_of_day(data, sf) # data is returned in time of day for tz
freq = data.groupby(grouper).count()
有没有更好的方法来做到这一点?
相关分类