0
votes

Création d'une nouvelle colonne basée sur le contenu des autres colonnes

J'ai un Dataframe, montré ici.

 Entrez la description de l'image ici

Je souhaite créer une nouvelle colonne appelée résultat < / p>

Résultat doit être créé en fonction des règles suivantes.

  1. renvoie la valeur affichée les colonnes les plus basées sur les colonnes D, F, M, P
  2. S'il y a une cravate entre ig et hy , retour hy . .
  3. ne compte pas nan comme valeur.

    mon fichier de données résultant aimerait ceci:

    < img src = "https://i.stack.imgur.com/4o3tm.png" alt = "Entrez la description de l'image ici"> xxx


4 commentaires

Pouvez-vous poster des données de données en format textuel, plutôt que des images? Copiez-le simplement et collez-le ici.


Bonjour Bienvenue sur So. Veuillez consulter MCVE et Comment-demander


J'ai posté l'extrait de code


Pourquoi retourner hy sur ig ? Quelle est la logique là-bas?


3 Réponses :


0
votes

Une solution possible est la suivante. Peut-être que ce n'est pas le plus élégant mais ça marche. Il n'y a qu'un seul problème, si dans une ligne, vous avez tous Nan, vous obtiendrez "HY" pour cette ligne.

import numpy as np
import pandas as pd

df_start = pd.DataFrame({'P':['IG','HY','IG',np.nan,'HY'], 'M':['HY','HY','IG', np.nan,'IG'], 'F':['HY',np.nan,'HY', np.nan,'IG'],'D':['IG','IG','IG', 'HY','IG']})

def count_winner(words):
    igc=0
    hyc=0

    for i in words:
        if(i=="IG"):
            igc+=1
        elif(i=="HY"):
            hyc+=1
    if(igc<=hyc):
        return("HY")
    else:
        return("IG")

words=df_start.to_string(header=False, index=False, index_names=False).split('\n')

words=[i.split("   ") for i in words]
winners=[count_winner(i) for i in words]
df_start["Result"]=winners


0 commentaires

2
votes

Utiliser mode : xxx

sortie: xxx


0 commentaires

0
votes

Solution expansée

Si vous vouliez compter chacune des valeurs UNIQUES dans la trame de données et déterminer lequel survient le plus souvent, vous pouvez utiliser le code ci-dessous.

Détails

Travailler à partir de votre cadre de données de départ donné, les valeurs NAN sont converties en cordes afin qu'elles puissent être comparées. Ensuite, la méthode NUMPY pour la recherche de valeurs uniques est utilisée sur le cadre de données. Ces valeurs sont ensuite utilisées pour créer une nouvelle colonne pour chaque valeur unique avec le nombre de cette valeur dans la ligne.

La seconde pour la boucle passe par les lignes de la nouvelle DF en trouvant le maximum de chaque ligne et comparant le nom de cette colonne à la liste des valeurs uniques.

entrée xxx

OUPUT: xxx

contre

Ce n'est pas Aussi élégant que la solution de @ Scott, mais il ajoute une certaine capacité si vous voulez faire quelque chose avec le nombre d'occurrences de chacun.

Il n'aborde pas non plus la sélection hy sur ig , mais cela ne peut pas être fait par programme sans connaître la logique derrière elle.


0 commentaires