Bonjour à tous,
Je cherche depuis un petit moment comment mettre à jour un DataFrame (ou plus précisément un Series) à partir d'une autre table.
en effet; à partir d'une colonne 'data' par exemple, définir le groupe auquel appartient la donnée selon un autre tableau.
voici un exemple du dict à utiliser :
1 2 3 4 5 6
| dct = {
'grpA': list('azerty'),
'grpB': list('bhvb'),
'grpC': list('pmlnqwptver')
#...
} |
et le résultat attendu:
data |
groupe |
a |
grpA |
b |
grpB |
l |
grpC |
c |
NaN |
*pour info, ne pas tenir compte des valeurs présentes dans plusieurs groupes à la fois. Mes données réelles en contiennent effectivement, mais je peux me débrouiller pour les retirer. Je comprends bien que ceci n'est plus un problème de code mais de contexte (quoi que..)
Je pense m'approcher de la solution avec un code du genre :
df['Groupe'] = df.data.apply(lambda x: val for val in dct.keys() if (x in dct[val]))
mais le hic, c'est que ceci ne fonctionne pas. j'ai alors utilisé le code suivant :
df['Groupe'] = df.data.apply(lambda x: [val for val in dct.keys() if (x in dct[val])])
et cette fois j'ai les valeurs mais en liste (ex: [grpA], [grpB] etc...)
Bien entendu; si j'inverse le if et le for, je peux enfin mettre une valeur par défaut, mais on entre jamais dans la boucle...
Bref, je me dis qu'il doit bien exister un moyen bien plus simple et général que ce que j'essaie de faire.
Auriez-vous une idée sur le sujet ?
Merci par avance !
Partager