J'ai un dataframe pandas pmov avec des colonnes SDRFT et DRFT contenant des valeurs flottantes. Certaines des valeurs DRFT sont 0.0. Lorsque cela se produit, je veux remplacer la valeur DRFT par la valeur SDRFT. À des fins de test, j'ai stocké les lignes où DRFT = 0,0 dans le dataframe df.
J'ai essayé de définir la fonction :
def SDRFT_is_DRFT(row):
if row['SDRFT'] == row['DRFT']:
pass
elif row['SDRFT'] == 0:
row['SDRFT'] = row['DRFT']
elif ['DRFT'] == 0:
row['DRFT'] = row['SDRFT']
return row[['SDRFT','DRFT']]
et l'appliquer avec : df.apply(SDRFT_is_DRFT, axis=1)
qui revient :
In []: df.apply(SDRFT_is_DRFT, axis=1)
Out[]:
SDRFT DRFT
118 29.500000 0.0
144 0.000000 0.0
212 29.166667 0.0
250 21.000000 0.0
308 21.500000 0.0
317 24.500000 0.0
327 11.000000 0.0
334 31.000000 0.0
347 29.500000 0.0
348 35.000000 0.0
Ce qui n'est pas le résultat que je souhaite.
J'ai également essayé la fonction :
def drft_repl(row):
if row['DRFT']==0:
row['DRFT'] = row['SDRFT']
ce qui semble fonctionner pour df.DRFT = df.apply(drft_repl, axis=1)
mais pmov.DRFT = pmov.apply(drft_repl, axis=1)
a entraîné le remplacement à 100% des valeurs DRFT par des valeurs SDRFT, sauf lorsque la valeur DRFT était nan.
Comment remplacer conditionnellement les valeurs des cellules d'une colonne par celles d'une autre colonne de la même ligne ?