OVH Cloud OVH Cloud

pandas switch-on switch-off

12 réponses
Avatar
carboleum
Bonjour,

Dans mon dataframe, j'ai une colonne "on" qui allume la lumière et une
colonne "off" qui éteint la lumière.

Quelqu'un connais la fonction (si elle existe ?) qui renvoie la colonne
"lumière allumée" ?

on off res
0 0 0 0
1 0 0 0
2 1 0 1
3 0 0 1
4 0 1 0
5 0 0 0
6 0 0 0
7 0 1 0
8 0 0 0
9 1 0 1
10 0 0 1
11 1 0 1
12 0 0 1
13 0 1 0
14 0 1 0
15 0 0 0

Ou une piste ?

Merci

2 réponses

1 2
Avatar
Alain Ketterlin
df['res'] = (1 - df.off.where(df.off)).fillna(df.on.where(df.on)).ffill()

Quatre parcours des données pour faire ça ? Les gars, quand la
Commission européenne s'occupera de la consommation énergétique des
programmes Python, vous êtes morts. Il vous restera le Guinness Book,
avec le mec qui a mangé 76 hot-dogs en 10 minutes...
Bon je plaisante, j'aime bien aussi l'art pour l'art. Mais n'utilisez
pas ça en production, hein.
-- Alain.
Avatar
Carboléͼm
Le 15/07/2021 Í  11:23, Damien Wyart a écrit :
* carboleum in fr.comp.lang.python: >
df['sig'] = df.on.where(df.on).fillna(1 - df.off.where(df.off)).ffill()

Pas mal du tout ;-)

Merci :-)
Par contre ça ne respecte pas la condition que tu avais ajoutée :

c'est vrai,
Je décide qu'en cas d'allumage et extinction simultané, c'est l'extinction qui
est prioritaire, la lampe s'éteint (1 1 -> 0)


j'utilise ce code pour du trading algorithmique (backtesting), je suis
pas encore tombé sur ce genre de conflit, fort heureusement.
Je propose dont la variante suivante :
df['res'] = (1 - df.off.where(df.off)).fillna(df.on.where(df.on)).ffill()

Adopté!
1 2