J'ai la liste suivante: avec IE Un index de fonctionnement de 1 pour chacun des éléments uniques de la liste np.unique code> valeurs de
[1, 2] p> p> p> < p> Comment générer la liste suivante: p>
x code>. p> p>
3 Réponses :
Vous pouvez utiliser pandas.cumcount () code>
après regroupement par la valeur elle-même, cela fait exactement que:
Numéro Chaque élément de chaque groupe de 0 à la longueur de ce groupe - 1. P> BlockQuote>
Essayez ceci: p>
xxx pré> sortie: p>
xxx pré> p>
Merci. Y a-t-il un moyen de le faire avec des pandas?
@ALEX_LEWIS J'ai essayé avec une fonction NATIVE NUMPY, mais je n'ai pas pu obtenir une solution agréable. L'inverse que je pense d'utiliser list.index code> dans une boucle, qui sera 100 fois plus lent :( peut-être que quelqu'un d'autre viendra avec quelque chose de numpopié uniquement.
Il suffit d'utiliser retour_counts = true code> de
np.unique code> avec listComp et
np.hstack code>. C'est encore une solution de pandas plus rapide
Cela ne fonctionnera que si les valeurs sont consécutives. pour x = np.array ([1, 1, 2, 2, 2, 1]) code> Vous obtiendrez
[1 2 3 1 2 3] code> pendant que vous devriez Obtenir
[1 2 1 2 3 3] code>
Je ne suis pas sûr, s'il s'agit d'une solution plus rapide ou plus lente, mais si vous avez besoin d'un résultat de liste sans pandas, vous pouvez essayer ce [1, 2, 1, 2, 3] P>
blockQuote>
blockQuote> (ou faites votre propre compteur avec
dict code> au lieu de
compteur () code>) p> p> p>