大熊猫的平均时差

xxx*_*xxx 5 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
Run Code Online (Sandbox Code Playgroud)

我想要的输出:

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
Run Code Online (Sandbox Code Playgroud)

重现 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'}}
Run Code Online (Sandbox Code Playgroud)

我不知道从哪里开始,它尝试了 timediff,但我不确定我是否理解它的工作原理以及如何将行迭代为“窗口函数”。提前致谢

Ale*_*der 6

请参阅将不同的函数应用于数据框列

(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
Run Code Online (Sandbox Code Playgroud)

  • 您可以按如下方式访问结果的秒属性:`.avg_time_diff.dt.seconds` (2认同)