Olá, Flávio! Tudo bem com você?
Existem algumas formas para obter esse resultado esperado por você, vou mostrar uma delas aqui e se não for exatamente o que você procura nos retorne por aqui mesmo, ok?
- Criando DataFrame com base no seu conjunto de dados:
import pandas as pd
bd = {'R_D': ['R', 'D', 'R', 'D','R','D','D','D'],
'Valores': [80,10,40,23,79,12,34,21] }
dataframe = pd.DataFrame(bd)
dataframe
Saída:
| R_D | Valores |
---|
0 | R | 80 |
1 | D | 10 |
2 | R | 40 |
3 | D | 23 |
4 | R | 79 |
5 | D | 12 |
6 | D | 34 |
7 | D | 21 |
Essa primeira parte consiste na criação de um objeto do tipo DataFrame passando como dados o dicionário criado por você.
import numpy as np
dataframe['Valores_2'] = np.where(dataframe['R_D']=='R', dataframe['Valores'], dataframe['Valores']*-1)
dataframe
Saída:
| R_D | Valores | Valores_2 |
---|
0 | R | 80 | 80 |
1 | D | 10 | -10 |
2 | R | 40 | 40 |
3 | D | 23 | -23 |
4 | R | 79 | 79 |
5 | D | 12 | -12 |
6 | D | 34 | -34 |
7 | D | 21 | -21 |
Nesse trecho de código estamos criando uma nova coluna chamada "Valores_2" com base nos valores já existentes em dataframe. Para fazer isso foi utilizado o método where da biblioteca numpy. Sua sintaxe é np.where(condition, x, y)
onde é retornado x se a condição for atendida, caso contrário y. Então colocamos como condição dataframe['R_D']=='R'
caso o valor presente na coluna R_D seja R, retornamos o próprio valor dataframe['Valores']
, caso não seja R retornamos o valor multiplicado por -1 dataframe['Valores']*-1
. Dessa forma garantimos valores positivos para 'R' e valores negativos para 'D'.
Espero ter ajudado, mas se ainda persistir alguma dúvida estou sempre à disposição.
:)
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.Bons Estudos!