table = pd.DataFrame(data=[[1,2,3],[4,5,6],[7,8,9]],
columns=['High','Middle','Low'],
index=['Blue','Green','Red'])
df = pd.DataFrame(data=[['High','Blue'],
['High','Green'],
['Low','Red'],
['Middle','Blue'],
['Low','Blue'],
['Low','Red']],
columns=['A','B'])
>>> df
A B
0 High Blue
1 High Green
2 Low Red
3 Middle Blue
4 Low Blue
5 Low Red
>>> table
High Middle Low
Blue 1 2 3
Green 4 5 6
Red 7 8 9
J'essaie d'ajouter une troisième colonne "C" basée sur les valeurs du tableau. Ainsi, la première ligne obtiendrait une valeur de 1, la seconde de 4, etc.
S'il s'agissait d'une recherche unidimensionnelle, je convertirais la table en dictionnaire et utiliserais df['C'] = df['A'].map(table)
. Cependant, comme il s'agit de deux dimensions, je ne peux pas comprendre comment utiliser la carte ou l'appliquer.
Idéalement, je convertirais le tableau au format dictionnaire afin de le sauvegarder avec d'autres dictionnaires dans un fichier json, mais ce n'est pas essentiel.
pandas
lookup
table.lookup(df.B,df.A)
Out[248]: array([1, 4, 9, 2, 3, 9], dtype=int64)
#table['c']=table.lookup(df.B,df.A)
Ou df.apply(lambda x : table.loc[x['B'],x['A']],1)
personnellement je n'aime pasapply
Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.
En cas d'infraction, veuillez [email protected] Supprimer.
laisse moi dire quelques mots