Forum >> Principianti >> Manipolare dati da file, da stringhe a float

Pagina: 1

Salve a tutti, ho il seguente problema: ho un file.dat contente delle osservazioni organizzate in questo modo:

2015-06-05T22:45:29.8 -1.5004 .02847384765008059110

2015-06-05T22:48:14.8 -1.5315 .02895876378576958522

2015-06-05T22:52:48.5 -1.5154 .03136000637755037192


...

la prima colonna contiene la data, vorrei organizzare una matrice digitale che abbia come seconda e terza colonna elementi identici (float), mentre vorrei che la prima colonna vorrei iniziasse con 0 e contenesse le differenze rispetto allo zero. In poche parole vorrei trasformare la stringa in float e quindi fare una operazione di differenza. il risultato dovrebbe avere questo aspetto:

0.000 -1.5004 .02847384765008059110

235.0 -1.5315 .02895876378576958522

...

dove 235 sono i secondi trascorsi tra il secondo e il primo. Suggerimenti su come procedere??
Salve a tutti, ho il seguente problema: ho un file.dat contente delle osservazioni organizzate in questo modo:

2015-06-05T22:45:29.8 -1.5004 .02847384765008059110

2015-06-05T22:48:14.8 -1.5315 .02895876378576958522

2015-06-05T22:52:48.5 -1.5154 .03136000637755037192


...

la prima colonna contiene la data, vorrei organizzare una matrice digitale che abbia come seconda e terza colonna elementi identici (float), mentre vorrei che la prima colonna vorrei iniziasse con 0 e contenesse le differenze rispetto allo zero. In poche parole vorrei trasformare la stringa in float e quindi fare una operazione di differenza. il risultato dovrebbe avere questo aspetto:

0.000 -1.5004 .02847384765008059110

235.0 -1.5315 .02895876378576958522

...

dove 235 sono i secondi trascorsi tra il secondo e il primo. Suggerimenti su come procedere??
>>> from datetime import datetime as dt
>>> F = "%Y-%m-%dT%H:%M:%S.%f"
>>> f = [i.split() for i in open("file.dat").readlines()]
>>> Z = dt.strptime(f[ 0 ][ 0 ], F)
>>> [((dt.strptime(a, F) - Z).total_seconds(), b, c) for a, b, c in f]
[(0.0, '-1.5004', '.02847384765008059110'), (165.0, '-1.5315', '.02895876378576958522'), (438.7, '-1.5154', '.03136000637755037192')]

--- Ultima modifica di C8E in data 2015-08-05 12:12:15 ---
THE 🍺-WARE LICENSE (Revision ㊷):
<carlo@🐍.it> wrote this post. As long as you retain this notice you
can do whatever you want with this stuff. If we meet some day, and you
think this stuff is worth it, you can buy me a 🍺 in return. -- ㎝
Grazie della rapida risposta, solo un chiarimento: nel codice sono visualizzati dei punti interrogativi vicino a "f" tra gli zeri, per cosa stanno?
Grazie della rapida risposta, solo un chiarimento: nel codice sono visualizzati dei punti interrogativi vicino a "f" tra gli zeri, per cosa stanno?
aggiorna la pagina.
THE 🍺-WARE LICENSE (Revision ㊷):
<carlo@🐍.it> wrote this post. As long as you retain this notice you
can do whatever you want with this stuff. If we meet some day, and you
think this stuff is worth it, you can buy me a 🍺 in return. -- ㎝


Pagina: 1



Esegui il login per scrivere una risposta.