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,但我不确定我是否理解它的工作原理以及如何将行迭代为“窗口函数”。提前致谢
请参阅将不同的函数应用于数据框列:
(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)
| 归档时间: |
|
| 查看次数: |
2708 次 |
| 最近记录: |