ID SS RR ABC 10.4 ABC 12.6 10.4 ABC 12.6 10.4 LMN 5.6 LMN 8.7 5.6
3 Réponses :
Vous devez le inplace
ou l'ajouter en inplace
df.SS.fillna(method='ffill',inplace=True) df.RR.fillna(method='ffill',inplace=True) #df.SS = df.SS.fillna(method='ffill') #df.RR = df.RR.fillna(method='ffill')
lol m'a obtenu par 10 secondes, je vais supprimer.
Merci à vous deux! Ça marche
fillna
ne fonctionne pas sur place. Vous devrez soit ajouter inplace=True
à vos appels pour fillna
comme une autre réponse l'a indiqué.
Vous pouvez également réécrire votre code pour écraser votre trame de données avec la sortie corrigée.
clean_df = df.replace("", np.nan).ffill()
.replace("", np.nan)
remplacera tous les espaces par NaN
dans toute votre trame de données.ffill()
est un raccourci pour .fillna(method="ffill")
Puisque nous ne inplace=True
pas ici l'indicateur inplace=True
, nous pouvons enchaîner ces méthodes et écraser notre dataframe (ou produire une nouvelle dataframe avec ces modifications en changeant notre nom de variable:
df = df.replace("", np.nan).ffill()
Hé, j'ai édité dans un problème légèrement différent si vous pouvez jeter un oeil. Merci.
Vous n'avez pas besoin de fillna
ici, vous pouvez appeler ffill()
directement:
In [1793]: df[['SS', 'RR']] = df[['SS', 'RR']].ffill() In [1794]: df Out[1794]: SS RR 0 NaN 10.4 1 12.6 10.4 2 12.6 10.4 3 12.6 5.6 4 8.7 5.6
Hé, j'ai édité dans un problème légèrement différent si vous pouvez jeter un oeil. Merci.
Quelque chose comme ça pourrait fonctionner: df.groupby('ID')[['SS', 'RR']].ffill()