python中的自然语言日期差异

时间:2016-10-11 21:27:20

标签: python pandas python-datetime

我有一个动态生成的pandas数据帧,具有以下结构:

name,Events,Last,Elapsed
10.0.0.103,11230,2016-10-11 23:16:45,0 days 00:00:08.708000000
10.0.0.24,14088,2016-10-11 23:16:52,0 days 00:00:01.708000000

详细说明了每个IP地址(名称)的事件数,最后一个事件的时间(最后一个)以及自该事件以来经过的时间(经过时间)。使用以下代码使用datetime生成Elapsed列:

dfTotalS['Elapsed'] = datetime.datetime.now() - dfTotalS['Last']

我需要Elapsed列为自然语言',例如:

0 days 00:00:01.708000000 => 'less than 5 seconds ago'
3 days 00:02:22.708000000 => 'over 3 days ago'

我玩过dateutil但没有取得多大成功。解决这个问题的最佳方式是什么?

1 个答案:

答案 0 :(得分:0)

感谢@Boud让我开始。

CSV:

name,Events,Last,Elapsed
10.0.0.103,11230,2016-10-11 23:16:45,0 days 00:00:08.708000000
10.0.0.24,14088,2016-10-11 23:16:52,0 days 00:00:01.708000000

使用texttime.py(http://code.activestate.com/recipes/498062-nicely-readable-timedelt a)

import texttime

dfTotal['Elapsed'] = dfTotal['Elapsed'].apply(lambda x: texttime.stringify(x)) + ' ago'
print dfTotal

返回

name,Events,Last,Elapsed
10.0.0.103,11230,2016-10-11 23:16:45,8 seconds ago
10.0.0.24,14088,2016-10-11 23:16:52,one second ago