Comment obtenir des pandas.read_csv() pour en déduire datetime et timedelta types de fichier CSV colonnes?
les pandas.read_csv() déduit les types de colonnes, mais je n'arrive pas à en déduire une datetime ou timedelta type (par exemple,datetime64
, timedelta64
) pour les colonnes dont les valeurs semblent évidents datetimes temps et les deltas.
Voici un exemple de fichier CSV:
datetime,timedelta,integer,number,boolean,string
20111230 00:00:00,one hour,10,1.6,True,Foobar
Et un peu de code pour le lire avec les pandas:
dataframe = pandas.read_csv(path)
Les types de colonnes que dataframe sortir comme objet, de l'objet, int, float, bool, l'objet. Ils sont tous comme je m'attends à l'exception des deux premières colonnes, qui je veux être datetime et timedelta.
Est-il possible d'obtenir des pandas pour détecter automatiquement le type datetime et timedelta colonnes?
(Je ne veux pas avoir à dire pandas dont les colonnes sont datetimes et timedeltas ou dire à l'formats, je le veux pour essayer de détecter automatiquement comme il le fait dans, le flotteur et le bool colonnes.)
to_timedelta
est disponible dans 0.13: pandas.pydata.org/pandas-docs/version/0.13.0/...; que, de concert avec to_datetime
vous pouvez essayer de convertir les colonnes. N'est pas leur automatic
façon de le faire à partir d'une chaîne. Ses trop ambigu.
OriginalL'auteur Sean Hammond | 2014-02-20
Vous devez vous connecter pour publier un commentaire.
Une chose que vous pouvez faire est de définir votre date de l'analyseur à l'aide de
strptime
, cela permettra de gérer votre format de date, ce n'est pas automatique:Puis convertir timedeltas utiliser le dict et la fonction d'analyser et de les convertir à timedeltas
Pour répondre à votre question principale je ne sais pas d'un moyen pour ce faire.
MODIFIER
À la place de mon alambiqué fonction de mapping, vous pouvez faire exactement cela:
Modifier
Comme le fait remarquer @Jeff, vous pouvez le faire au lieu d'utiliser
strptime
lors de la lecture du fichier csv (dans la version 0.13.1 et par-dessus tout de même):to_timedelta
remplace la nécessité de réellement analyser les timedeltas (disponible dans 0.13.0)n'étais pas au courant, merci pour l'info.
n'avez pas besoin de la
date_parser
fonction iciparse_dates=[0]
de travail, aussi pourrait tourner surinfer_datetime_format
auto ramasser la date, voir ici: pandas.pydata.org/pandas-docs/stable/whatsnew.html#enhancements (reste à spécifier la colonne)cela ne fonctionne pas avec 0.13.1 de sorte qu'il semble que je dois utiliser mon parseur personnalisé
vous devez spécifier
parse_dates[0]
TOUJOURSOriginalL'auteur EdChum