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()