J'ai deux DataFrames. . .Recherche vectorisée sur une base de données pandas
df1
est un tableau dont j'ai besoin pour extraire des valeurs à partir de l'utilisation de paires de colonnes d'index extraites de plusieurs colonnes dans df2.
Je vois qu'il ya une fonction get_value
qui fonctionne parfaitement lorsque donné une valeur d'index et de la colonne, mais en essayant de vectoriser cette fonction pour créer une nouvelle colonne Je manquerais ...
df1 = pd.DataFrame(np.arange(20).reshape((4, 5)))
df1.columns = list('abcde')
df1.index = ['cat', 'dog', 'fish', 'bird']
a b c d e
cat 0 1 2 3 4
dog 5 6 7 8 9
fish 10 11 12 13 14
bird 15 16 17 18 19
df1.get_value('bird, 'c')
17
Maintenant ce que je besoin de faire est de créer une nouvelle colonne entière sur df2
- lors de l'indexation df1
sur la base de l'index, les paires de colonnes des colonnes animal
, letter
spécifiées dans df2
efficacement vectoriser la fonction pd.get_value
ci-dessus.
df2 = pd.DataFrame(np.arange(20).reshape((4, 5)))
df2['animal'] = ['cat', 'dog', 'fish', 'bird']
df2['letter'] = list('abcd')
0 1 2 3 4 animal letter
0 0 1 2 3 4 cat a
1 5 6 7 8 9 dog b
2 10 11 12 13 14 fish c
3 15 16 17 18 19 bird d
résultant dans. . .
0 1 2 3 4 animal letter looked_up
0 0 1 2 3 4 cat a 0
1 5 6 7 8 9 dog b 6
2 10 11 12 13 14 fish c 12
3 15 16 17 18 19 bird d 18
Le verrouillage est le gagnant ici. Ne peut pas penser à une approche différente quand il y a un intégré. Et l'application tue la performance si elle est essayée. – Dark
J'ai déjà essayé de chercher, mais après que votre réponse a trouvé que mon problème était lié à des valeurs qui ne regardent pas dans le tableau - existe-t-il un moyen de gérer les valeurs qui ne recherchent pas? –
@AranFreel Je pense que vous pourriez jeter un coup d'oeil à la réponse de John Galt. –