Maison > développement back-end > Tutoriel Python > Mettre à jour les valeurs dans DF en fonction des noms de colonnes

Mettre à jour les valeurs dans DF en fonction des noms de colonnes

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Libérer: 2024-02-09 13:00:15
avant
665 Les gens l'ont consulté

根据列名更新 DF 中的值

Contenu de la question

J'ai la prochaine trame de données pandas :

x_1 x_2 x_3 x_4 col_to_replace cor_factor
    
    1   2   3   4   x_2            1
    3   3   5   1   x_1            6
    2   2   0   0   x_3            0
...
Copier après la connexion

Je souhaite utiliser la colonne cor_factor 中的值更新保存在 col_to_replace 中的名称列,并将结果保存在相应的列以及 car_factor. Certaines (laides) solutions pourraient être :

for i in len(df.shape[0]):
    df[df['col_to_replace']].iloc[i] = df[df['col_to_replace']].iloc[i] - df['cor_factor'].iloc[i]                                                                          
    df['cor_factor'].iloc[i] = df['cor_factor'].iloc[i] -  df[df['col_to_replace']].iloc[i]
Copier après la connexion

Cette méthode ne permet certainement pas de gagner du temps. Je recherche une solution plus rapide.

Le résultat de

df devrait ressembler à ceci :

x_1 x_2 x_3 x_4 col_to_replace cor_factor
    
    1   1   3   4   x_2            -1
    -3  3   5   1   x_1            3
    2   2   0   0   x_3            0
...
Copier après la connexion


Réponse correcte


Corrigez la dernière colonne en utilisant pivot 更正 x_valeur et recherche d'index. Puisque les valeurs changent, assurez-vous de copier avant de modifier :

# perform indexing lookup
# save the value for later
idx, cols = pd.factorize(df['col_to_replace'])
corr = df.reindex(cols, axis=1).to_numpy()[np.arange(len(df)), idx]

# pivot and subtract the factor
# ensure original order of the columns
cols = df.columns.intersection(cols, sort=false)
df[cols] = df[cols].sub(df.pivot(columns='col_to_replace',
                                 values='cor_factor'),
                        fill_value=0).convert_dtypes()
# correct with the saved "corr"
df['cor_factor'] -= corr
Copier après la connexion

Sortie :

x_1  x_2  x_3  x_4 col_to_replace  cor_factor
0    1    1    3    4            x_2          -1
1   -3    3    5    1            x_1           3
2    2    2    0    0            x_3           0
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal