J'ai un df,

delta1    delta2
  0         -1
  2          0
 -1          0
  0          0

Je me demande comment attribuer des valeurs de delta2 à delta1 uniquement si delta1 > 0 et delta2 <= 0; le résultat ressemble,

delta1    delta2
  0         -1
  0          0
 -1          0
  0          0 
4
daiyue 14 mars 2019 à 20:26

2 réponses

Meilleure réponse

En utilisant numpy.where :

df['delta1'] = np.where(df.delta1.gt(0) & df.delta2.le(0), df.delta2, df.delta1)
   delta1  delta2
0       0      -1
1       0       0
2      -1       0
3       0       0
6
user3483203 14 mars 2019 à 17:30

Utilisez ce qui suit:

m=df.delta1.gt(0)&df.delta2.le(0)
df.loc[m,'delta1']=df.delta2
print(df)
   delta1  delta2
0       0      -1
1       0       0
2      -1       0
3       0       0
2
anky 14 mars 2019 à 17:34