6
votes

Combinez la colonne de date et la colonne temporelle dans la colonne DateTime

J'ai un dataframe Pandas comme celui-ci; (obtenu en analysant un fichier Excel) xxx

Colonne Date de la réunion est un horodatage avec une représentation comme horodatage ('2013-12-20 00:00 : 00 ', tz = aucun) et heure de la réunion est un objet denttime.time avec une représentation comme DateTime.time (14, 0)

Je veux combiner la date de réunion et temps de réunion dans une colonne. DateTime.combine semble faire ce que je veux, cependant, je dois appliquer cette fonction colonne-sage en quelque sorte. Comment puis-je atteindre cela?


1 commentaires

Peut-être que vous pourriez appliquer la fonction (ou non-fonction que vous voulez) de respecter la date de réunion et la durée de la réunion pandas.pydata.org/pandas-docs/dev/generated/...


3 Réponses :


9
votes

Vous pouvez utiliser Appliquer la méthode et appliquer une combinaison comme celle-ci:

>>> df.apply(lambda x: combine(x['MEETING DATE'], x['MEETING TIME']), axis=1)
0   2013-12-16 14:00:00
1   2013-12-12 13:00:00


1 commentaires

Hey, j'étais coincé avec un problème similaire et j'ai essayé ceci - mais je reçois une erreur - Combinaison () Argument 1 doit être DateTime.Date, non série. Je suppose que combiner ne prend pas toute la série, un seul élément à la fois. Comment puis-je contourner cela?



3
votes

D'autres solutions ne fonctionnaient pas pour moi, alors j'ai proposé une solution de contournement en utilisant remplacer code> au lieu de combine code>: xxx pré>

Dans votre cas: P>

def combine_date_time(df, datecol, timecol):
    return pd.to_datetime(df[datecol].dt.date.astype(str)
                          + ' '
                          + df[timecol].astype(str))


4 commentaires

J'ajoute une solution plus rapide, vous pouvez le vérifier.


Et à quelle vitesse est ma solution?


@jezrael Désolé, je n'ai pas pu faire fonctionner. Je ne peux pas passer du temps dessus en ce moment. Merci pour la contribution, cependant.


aucun problème. Dans Pandas, il convient de mieux utiliser une fonction vectorisée de pandas très rapide et si elle n'existe pas, puis utilisez Appliquer, car lent.



2
votes

Vous pouvez convertir une colonne de la colonne à string , puis to_timedelta , alors est une somme facile les deux colonnes: xxx


0 commentaires