J'ai une colonne, col1, dans un dataframe rempli de valeurs.
col1 col2 row1 [0.0, 6.3, 3.93, 5.27, 8.2, 6.4, 5.6] [0,100,200,300,400,500,600] row2 [0.0, 5.9, 4.2, 4.1] [0,100,200,300] row3 [0.0, 6.4, 3.9, 8.2, 4.2] [0,100,200,300,400]
Chaque ligne contient une série. J'ai besoin d'une nouvelle colonne, disons col2, qui renvoie une nouvelle série. Cette série commence à 0 et augmente de 100 à chaque fois jusqu'à ce que cette série corresponde à la longueur de la série d'origine.
Résultat attendu
col1 row1 [0.0, 6.33839991, 3.93961207, 5.27702178, 8.27702178, 6.44343, 5.668574] row2 [0.0, 5.93961207, 4.27702178, 4.12702178] row3 [0.0, 6.44428501, 3.93961207, 8.27702178, 4.27121178]
Merci !
3 Réponses :
Essayez :
def func(x):
x['col2'] = np.arange(0, len(x['col1'])*100, 100)
return x
df.apply(lambda x: func(x) , axis=1)
J'ai édité le code pour améliorer la clarté de ce que j'essaie de faire
Ce code ne résout pas mon problème, juste pour être clair
C'était aussi ma solution et elle obtient la solution requise. Cependant, je l'ai condensé en une seule ligne: df ['col2'] = df ['col1']. Apply (lambda x: np.arange (0, len (x) * 100, 100)) < / code>
Pourriez-vous s'il vous plaît marquer cela comme une solution, si cela vous semble?
Essayez ceci si vous voulez la multiplication basée sur chaque chaîne unique (factorisée), pour les éléments dupliqués de la liste, cela retournera des résultats dupliqués:
df.col1.apply(lambda x: np.arange(len(x))*100)
print(df)
col1 \
row1 [0.0, 6.33839991, 3.93961207, 5.27702178, 8.27...
row2 [0.0, 5.93961207, 4.27702178, 4.12702178]
row3 [0.0, 6.44428501, 3.93961207, 8.27702178, 4.27...
col2
row1 [0, 100, 200, 300, 400, 500, 600]
row2 [0, 100, 200, 300]
row3 [0, 100, 200, 300, 400]
Ou suggestion de @jezrael:
df['col2']=df.col1.transform(lambda x: pd.factorize(x)[0]*100)
Ma proposition est:
df['col2'] = df.col1.transform(lambda x: [ i * 100 for i in range(len(x))])
Lambda ne peut pas contenir d'affectation
pouvez-vous publier le dataframe? et la valeur attendue? c'est déroutant ce que vous voulez et basé sur quoi
J'ai mis à jour ma question. J'espère que c'est clair!
qu'est-ce que vous avez des doublons dans votre liste?
Les doublons n'ont pas d'importance. Tout ce dont j'ai besoin est la longueur totale de la liste