我正在尝试计算平均时间差,以小时/分钟/秒为单位,迭代字段 - 在我的示例中,针对每个不同的IP地址。 此外,列包含每个ip行的计数。
我的数据框架如下:
date ipAddress
2016-08-08 00:39:00 98.249.244.22
2016-08-08 13:03:00 98.249.244.22
2016-08-20 21:37:00 98.211.135.179
2016-08-21 16:11:00 98.211.135.179
2016-08-21 16:19:00 98.211.135.179
2016-08-25 01:30:00 98.248.215.244
我想要的输出:
ipAddress avg_time_diff count
98.249.244.22 avg_diff_1 2
98.211.135.179 avg_diff_2 3
98.248.215.244 0 1
再现df:
{u'date': {3233: Timestamp('2016-08-08 00:39:00'),
3551: Timestamp('2016-08-08 13:03:00'),
349036: Timestamp('2016-08-20 21:37:00'),
349040: Timestamp('2016-08-21 16:11:00'),
349049: Timestamp('2016-08-21 16:19:00'),
378843: Timestamp('2016-08-25 01:30:00')},
u'ipAddress': {3233: u'98.249.244.22',
3551: u'98.249.244.22',
49036: u'98.211.135.179',
349040: u'98.211.135.179',
349049: u'98.211.135.179',
378843: u'98.248.215.244'}}
我不知道从哪里开始,它尝试timediff但我不确定我是否理解它是如何工作的以及如何作为“窗口函数”迭代行。 提前致谢
答案 0 :(得分:1)
请参阅applying different functions to dataframe columns:
(df.groupby('ipAddress')
.date
.agg({'count': 'count',
'avg_time_diff': lambda group: group.sort_values().diff().mean()}))
# Output
# count avg_time_diff
# ipAddress
# 98.211.135.179 2 00:08:00
# 98.248.215.244 1 NaT
# 98.249.244.22 2 12:24:00