web-dev-qa-db-fra.com

pandas conversion de datetime en horodatage entier

Considérant un pandas dataframe dans python ayant une colonne nommée time de type entier, je peux la convertir en datetime format avec l'instruction suivante.

df['time'] = pandas.to_datetime(df['time'], unit='s')

alors maintenant la colonne a des entrées comme: 2019-01-15 13:25:43.

Quelle est la commande pour rétablir la chaîne en une valeur d'horodatage entière (représentant le nombre de secondes écoulées depuis 1970-01-01 00:00:00)?

J'ai vérifié pandas.Timestamp mais je n'ai pas trouvé d'utilitaire de conversion et je n'ai pas pu utiliser pandas.to_timedelta pour ça.

Existe-t-il un utilitaire pour cette conversion?

10
Francesco Boi

Vous pouvez transtyper en int en utilisant astype(int) et le diviser par 10**9 pour obtenir le nombre de secondes avant le début de l'époque unix.

import pandas as pd
df = pd.DataFrame({'time': [pd.to_datetime('2019-01-15 13:25:43')]})
df_unix_sec = pd.to_datetime(df['time']).astype(int)/ 10**9
print(df_unix_sec)
9
Always Sunny

Utilisez .dt.total_seconds() sur un timedelta64:

import pandas as pd
df = pd.DataFrame({'time': [pd.to_datetime('2019-01-15 13:25:43')]})

# pd.to_timedelta(df.time).dt.total_seconds() # Is deprecated
(df.time - pd.to_datetime('1970-01-01')).dt.total_seconds()

Production

0    1.547559e+09
Name: time, dtype: float64
5
ALollz

La façon la plus simple est d'utiliser .value

pd.to_datetime('1970-01-01').value
1
Ignacio Peletier