大熊猫的平均时差

时间:2016-09-01 13:12:29

标签: python datetime pandas

我正在尝试计算平均时间差,以小时/分钟/秒为单位,迭代字段 - 在我的示例中,针对每个不同的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但我不确定我是否理解它是如何工作的以及如何作为“窗口函数”迭代行。 提前致谢

1 个答案:

答案 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