Quand il y a un type pd.DataFrame (l'index contient l'heure unix) comme indiqué dans le tableau ci-dessous, je voudrais changer l'horodatage de type int en type datetime pour un traitement ultérieur. Notez que si vous utilisez les fonctions fournies par les pandas telles quelles, vous obtiendrez des résultats étranges.
x | y | z | |
---|---|---|---|
timestamp | |||
1450407402547 | -2.153091 | 1.582626 | 9.288803 |
1450407402577 | -2.368118 | 1.287659 | 9.227219 |
1450407402607 | -3.023911 | 4.160522 | 8.133606 |
1450407402637 | -2.316528 | 2.467163 | 9.581879 |
convert.py
df["time"] = pd.to_datetime(df.index , unit="ms")
df["time2"] =df.index
df["time3"] = df.time2.apply(lambda x: datetime.fromtimestamp(x/1000))
x | y | z | time | time2 | time3 | |
---|---|---|---|---|---|---|
timestamp | ||||||
1450407402547 | -2.153091 | 1.582626 | 9.288803 | 2015-12-18 02:56:42.547 | 1450407402547 | 2015-12-18 11:56:42.546999 |
1450407402577 | -2.368118 | 1.287659 | 9.227219 | 2015-12-18 02:56:42.577 | 1450407402577 | 2015-12-18 11:56:42.576999 |
1450407402607 | -3.023911 | 4.160522 | 8.133606 | 2015-12-18 02:56:42.607 | 1450407402607 | 2015-12-18 11:56:42.607000 |
1450407402637 | -2.316528 | 2.467163 | 9.581879 | 2015-12-18 02:56:42.637 | 1450407402637 | 2015-12-18 11:56:42.637000 |
J'ai fait time2 de force car une erreur s'est produite lorsque j'ai fait ce qui suit.
df["time3"] = df.index.apply(lambda x: datetime.fromtimestamp(x/1000))
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-117-0c598f05317f> in <module>()
----> 1 df["time3"] = df.index.apply(lambda x: datetime.fromtimestamp(x/1000))
AttributeError: 'Int64Index' object has no attribute 'apply'
À partir du résultat ci-dessus, l'heure unix est convertie correctement par la méthode time3.
Je dois vérifier les spécifications de pd.to_datetime ...
Recommended Posts