0
votes

Différence de DateTime informatique parmi les lignes consécutives dans la GroupeBy Dataframe

J'ai une question de pandas.

J'ai un fichier de données qui ressemble à ce qui suit: xxx

et je dois calculer une colonne supplémentaire, appelez-la mois , contenant le nombre de mois entre chaque ligne consécutive, pour le même nom. Ceci est pour calculer combien de mois sont passés entre une apparence d'un nom et la suivante dans le Dataframe. Le calcul doit être effectué en regroupement par nom, car je veux seulement connaître le nombre de mois entre des apperants consécutifs pour un utilisateur, pas pour des noms différents.

La production attendue dans ce cas serait: xxx

Tout conseils sur quel est le moyen le plus efficace de calculer la colonne mois sera très apprécié.

Notez que les dates toujours avoir le premier jour du mois, ce qui rend le calcul beaucoup plus facile.


1 commentaires

Nope, regarde la sortie Dataframe que je cherche. Il est similaire, mais le calcul que je veux ici est différent. Vous m'avez donné la bonne réponse pour l'autre, vous pourriez peut-être aider à obtenir la réponse à celle-ci? Merci d'avance!


3 Réponses :


0
votes

premier mois d'extrait de date xxx

puis calculer la différence xxx


0 commentaires

2
votes

Utiliser groupby.diff et diviser par un 1 mois chroneelta . xxx

sortie xxx


2 commentaires

Cela semble fonctionner! Je reçois cet avertissement cependant: le passage des entiers à Fillna est obsolète, augmentera TypeError dans une version future. Pour conserver l'ancien comportement, passez PD.Timedelta (secondes = n) à la place.


Oui, nous pouvons résoudre ce problème en utilisant pd.timédielta (jours = 30) à la place. Ou si vous voulez être vraiment précis: pd.timedelta (jours = 30.4) . Vient de vérifier. La version la plus précise serait: pd.timedelta (jours = 30.4368499)



1
votes

Convertir des valeurs à mois puis différence par dataframegroupby.diff : xxx

Une autre solution: xxx


4 commentaires

N'est-ce pas trop lent peut-être? Merci quand même!


Hum La taille peut varier, mais maintenant j'ai 27 rangées et 6 groupes.


@Erfan - OK, je pense que votre réponse est terrible, parce que l'arrondissement.


Ya, c'est à vous de décider.