0
votes

Peupler Pandas Dataframe à l'aide d'un dictionnaire basé sur une condition

J'ai un dataframe xxx

j'ai aussi un dictionnaire, où b in entrée_b signifie que je n'ai que la modification des lignes où rangée.a = b . xxx

Comment remplir le fichier de données avec des valeurs du dictionnaire pour obtenir xxx


2 commentaires

Je comprends comment faire cela en tournant d'abord le dictionnaire dans un Dataframe, puis fusionnez-le avec le premier. Cependant, cela devient très lent si le premier Dataframe (test) est beaucoup plus grand que sa partie que je souhaite modifier.


Je pense à transformer votre dictionnaire en un fichier de données en utilisant pd.from_dict (votre_diction) , puis la fusion avec INPUT_B me semble être la meilleure solution. Je serais surpris s'il y a une meilleure solution.


4 Réponses :


2
votes

Ce n'est peut-être pas la solution la plus efficace, mais d'après ce que je comprends, le travail effectué: xxx

rendements: xxx

Cela deviendra plus lent si le dictionnaire INPUT_B devient trop volumineux (trop de lignes sont mises à jour, trop d'itérations dans la boucle de la boucle), mais doivent être relativement rapides avec le petit INPUT_B 's Même avec un grand test dataframes.

Cette réponse suppose également que les touches du dictionnaire INPUT_B se réfèrent aux valeurs du B Colonne dans le Dataframe d'origine et ajoutera des valeurs répétées dans les colonnes C et d pour des valeurs répétées dans la colonne B .


0 commentaires

1
votes

Utilisation de Mettre à jour CODE>

test=test.set_index('B')
test.update(pd.DataFrame(input_b,index=['C','D']).T)
test=test.reset_index()
test
   B  A     C         D
0  1  a   NaN       NaN
1  2  b  Moon  Elephant
2  3  b   NaN       NaN
3  4  b   Sun     Mouse


0 commentaires

1
votes

Vous pouvez utiliser loc indexation après avoir défini votre index sur B : xxx


0 commentaires

1
votes

Utilisation de Appliquer CODE>

   A  B     C         D
0  a  1   NaN       NaN
1  b  2  Moon  Elephant
2  b  3   NaN       NaN
3  b  4   Sun     Mouse


0 commentaires