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
& month
que j'utilise pour décider de la valeur à remplir. Le dataframe avec les valeurs manquantes est appelé full_arranged
et 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.fillna
et 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.fillna
et pd.nan et cela n'a pas fonctionné).
full_arranged
ressemble à ç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