2016-10-11 2 views
0

Ich habe einen dynamisch generierte Pandas Datenrahmen mit dieser Struktur:Natürliche Sprache Datum Unterschiede in Python

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 

Dadurch wird die Anzahl der Ereignisse pro IP-Adresse (Name), wenn das letzte Ereignis (Last) war, und Wie viel Zeit ist seit diesem Ereignis verstrichen (verstrichen). Die verstrichene Säule wird mit Datumzeit mit dem folgenden Code erzeugt:

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

ich die verstrichene Spalt muß zum Beispiel in ‚natürlicher Sprache‘ sein:

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

ich um ohne viel mit dateutil gespielt habe Erfolg. Was ist der beste Weg, um dies zu tun?

+1

Ich weiß nicht von irgendwelchen Bibliotheken, die dies tun aus Die Box, also müssen Sie wahrscheinlich Ihre eigene Logik für die Konvertierung in die natürliche Sprache schreiben. –

+1

Sie können damit als Basis starten http://code.activestate.com/recipes/498062-nicely-readable-timedelta/ – Boud

+1

Haben Sie in "Pfeil" oder "humanize" geschaut? – jonrsharpe

Antwort

0

Dank @Boud für den Einstieg.

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 

Mit 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 

kehrt

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 
Verwandte Themen