Deutsch   English   Français   Italiano  
<t2c598$rs7$1@dont-email.me>

View for Bookmarking (what is this?)
Look up another Usenet article

Path: ...!news.mixmin.net!eternal-september.org!reader02.eternal-september.org!.POSTED!not-for-mail
From: Carboleum <c4rboleum**NOSPAM**@gmail.com.invalid>
Newsgroups: fr.comp.lang.python
Subject: Re: pandas switch-on switch-off
Date: Sun, 3 Apr 2022 14:51:52 +0200
Organization: A noiseless patient Spider
Lines: 105
Message-ID: <t2c598$rs7$1@dont-email.me>
References: <s46nio$r79$1@dont-email.me> <sc9kba$gpc$1@dont-email.me>
Mime-Version: 1.0
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Transfer-Encoding: 8bit
Injection-Date: Sun, 3 Apr 2022 12:51:52 -0000 (UTC)
Injection-Info: reader02.eternal-september.org; posting-host="9161ca3124d6aed1ada46b2eff535ae5";
	logging-data="28551"; mail-complaints-to="abuse@eternal-september.org";	posting-account="U2FsdGVkX1/5p50LmQDEI/oxdMlrtMYf"
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101
 Thunderbird/78.14.0
Cancel-Lock: sha1:qXgTPMcclEggP023aeXdFvkqYC8=
In-Reply-To: <sc9kba$gpc$1@dont-email.me>
Content-Language: fr-BE
Bytes: 3978

On 9/07/21 15:52, carboleum wrote:
> On 2/04/21 11:19, carboleum wrote:
>>
>> 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
> 
> J'ai trouvé \o/ Yeah!...
> 
> C'est un peu tiré par les cheveux, mais ca me plait! :-)
> 
> df = pd.DataFrame([[0, 0], [0, 0], [1, 0], [0, 0], [0, 1], [0, 0], [0, 
> 0], [0, 1], [0, 0], [1, 0], [0, 0], [1, 0], [0, 0], [0, 1], [0, 1], [0, 
> 0], [0, 0], [1, 0], [1, 1], [0, 0]], columns=['on', 'off']).astype(bool)
> 
> df['sig'] = df.on.where(df.on).fillna(1 - df.off.where(df.off)).ffill()
> 
> df
> 
>      on  off  sig
> 0    0    0  NaN
> 1    0    0  NaN
> 2    1    0  1.0
> 3    0    0  1.0
> 4    0    1  0.0
> 5    0    0  0.0
> 6    0    0  0.0
> 7    0    1  0.0
> 8    0    0  0.0
> 9    1    0  1.0
> 10   0    0  1.0
> 11   1    0  1.0
> 12   0    0  1.0
> 13   0    1  0.0
> 14   0    1  0.0
> 15   0    0  0.0
> 16   0    0  0.0
> 17   1    0  1.0
> 18   1    1  1.0
> 19   0    0  1.0
> 
> 


Bonjour Bonjour,

J'ai pondu quelque chose qui est plus lisible:

df['sig0'] = df.on - df.off
df['sig1'] = df.sig0.where(df.sig0 != 0).ffill()
df['sign'] = df.sig1 > 0

df
     on  off  sig0  sig1   sign
0    0    0     0   NaN  False
1    0    0     0   NaN  False
2    1    0     1   1.0   True
3    0    0     0   1.0   True
4    0    1    -1  -1.0  False
5    0    0     0  -1.0  False
6    0    0     0  -1.0  False
7    0    1    -1  -1.0  False
8    0    0     0  -1.0  False
9    1    0     1   1.0   True
10   0    0     0   1.0   True
11   1    0     1   1.0   True
12   0    0     0   1.0   True
13   0    1    -1  -1.0  False
14   0    1    -1  -1.0  False
15   1    1     0  -1.0  False
16   0    0     0  -1.0  False
17   0    0     0  -1.0  False
18   1    0     1   1.0   True
19   1    1     0   1.0   True
20   0    0     0   1.0   True

et qui a pour effet d'annuler l'effet quand on appuie sur les deux 
boutons en même temps (ligne 15 et 19)