Modification d'une valeur dans un pandas DataFrame à l'aide de la méthode .loc et de l'opérateur =
J'ai une trame de données avec des valeurs manquantes que j'essaie de remplir. J'ai créé une autre trame de données qui contient les données nécessaires pour remplir les valeurs manquantes. Les deux dataframes ont des colonnes year& monthque j'utilise pour décider de la valeur à remplir. Le dataframe avec les valeurs manquantes est appelé full_arrangedet le dataframe avec les valeurs que je souhaite importer dans le premier est appelé median_values.
Pour remplir les données manquantes, j'ai écrit le code suivant:
for column in full_arranged.drop(['year','month','day', 'date'], axis = 1).columns:
for year in range(2016,2019):
for month in range(1,13):
temp_val = median_values.loc[(median_values['year'] == year) & (median_values['month'] == month), column]
full_arranged.loc[(full_arranged[column].isnull()) & (full_arranged['year'] == year) & (full_arranged['month'] == month), column] = temp_val
Après avoir exécuté ce code, je vérifie les valeurs manquantes, mais aucune d'entre elles n'a changé. Qu'est-ce que je rate?
J'ai aussi essayé de faire la même chose mais avec la méthode pandas pd.fillnaet j'ai obtenu les mêmes résultats (les valeurs manquantes sont de type np.nan mais j'ai aussi fatigué d'exécuter le même code avec pd.fillnaet pd.nan et cela n'a pas fonctionné).
full_arrangedressemble à ça:
| an | mois | valeur_1 | valeur_2 |
|---|---|---|---|
| 2017 | 3 | Dans | 3.52 |
Solution du problème
Un exemple minimal des deux DF serait utile.
However, the condition & (median_values[column] == column) seems strange.
Vous ne voulez pas faire quelque chose comme ça ? :
= median_values.loc[(median_values['year'] == year) & (median_values['month'] == month),column]
So select the row by year and month and return the value of the column of the median_values dataframe?
Commentaires
Enregistrer un commentaire