0
votes

Comment créer une nouvelle colonne en fonction de l'itération des colonnes existantes dans Pandas?

J'ai un Dataframe, xxx

en fonction de ces colonnes existantes, je souhaite créer une nouvelle colonne.
Si j'y vais un à un, ce serait comme ça, xxx

mais, je ne veux pas écrire toutes les colonnes (> 900 colonnes).
Comment puis-je itération et créer de nouvelles colonnes?
Merci d'avance!


0 commentaires

3 Réponses :


0
votes

Vous pouvez parcourir les différents noms de colonnes et effectuer les opérations +1 et les opérations . Lorsque vous utilisez df.columns , vous recevez ensuite une liste des différents en-têtes de colonne. Vous pouvez donc faire quelque chose comme ceci par exemple: xxx

Vous pouvez ajouter le reste des opérations trop dans la même boucle.

espère qu'il aide < / p>


0 commentaires

1
votes

Voici une version nettoyée de ce que je pense que vous essayez de faire:

# Include only variables with the "column" stub
cols = [c for c in df.columns if 'column' in c]

for i, c in enumerate(cols):
    a = f"A{i+1}"
    df[a] = 1 + df.loc[df[c] > 0.1, 'foo'].rank(ascending=False)
    df[f'log_{a}'] = np.log(df[a]).fillna(value=0)


2 commentaires

Il ne remplit pas 0 dans df [a] colonnes. Comment puis-je résoudre ce problème?


Vous n'en avez pas besoin parce que le journal de 1 est zéro



0
votes

Vous pouvez simplement faire:

   foo  column1  column2   A1  new_A1    log_A1   A2  new_A2    log_A2
0    5     0.80     0.01  5.0     6.0  1.791759  0.0     0.0  0.000000
1   10     0.90     0.01  3.0     4.0  1.386294  0.0     0.0  0.000000
2   15     0.20     1.20  2.0     3.0  1.098612  2.0     3.0  1.098612
3    8     0.12     0.50  4.0     5.0  1.609438  3.0     4.0  1.386294
4   74     0.78     0.70  1.0     2.0  0.693147  1.0     2.0  0.693147


0 commentaires