J'ai une question de pandas.
J'ai un fichier de données qui ressemble à ce qui suit: p> et je dois calculer une colonne supplémentaire, appelez-la La production attendue dans ce cas serait: P > Tout conseils sur quel est le moyen le plus efficace de calculer la colonne Notez que les dates toujours avoir le premier jour du mois, ce qui rend le calcul beaucoup plus facile. p> p> mois code>, 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. P> mois code> sera très apprécié. p>
3 Réponses :
premier mois d'extrait de date puis calculer la différence p>
Utiliser groupby.diff code> et diviser code> par un 1 mois chroneelta code>.
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) code> à la place. Ou si vous voulez être vraiment précis: pd.timedelta (jours = 30.4) code>. Vient de vérifier. La version la plus précise serait: pd.timedelta (jours = 30.4368499) code>
Convertir des valeurs à mois puis différence par Une autre solution: p> dataframegroupby.diff code> :
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.
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!