我有一个动态生成的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但没有取得多大成功。解决这个问题的最佳方式是什么?
答案 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