Eu criei um dataframe do pandas da seguinte maneira:
ds = {'col1' : ["A","B"], 'probability' : [0.3, 0.6]}
df = pd.DataFrame(data=ds)
O quadro de dados fica assim:
print(df)
col1 probability
0 A 0.3
1 B 0.6
Preciso criar um novo dataframe que duplique cada linha e atribua ao registro duplicado uma probabilidade necessária para somar 1.
Do exemplo acima:
- Preciso duplicar o registro 0 de modo que A obtenha uma probabilidade de 0,3 (para manter o que já está lá) e o registro duplicado obtenha uma probabilidade de 0,7 (0,3 + 0,7 = 1)
- Preciso duplicar o registro 1 de modo que B obtenha uma probabilidade de 0,6 (para manter o que já está lá) e o registro duplicado obtenha uma probabilidade de 0,4 (0,6 + 0,4 = 1)
O dataframe resultante fica assim:
col1 probability
0 A 0.3
1 A 0.7
2 B 0.6
3 B 0.4
Alguém pode me ajudar a fazer isso em pandas, por favor?
Uma solução possível, que primeiro cria um segundo dataframe com
col1
e1-probability
. Em seguida, ele concatena verticalmente o segundo dataframe com o original e classifica porcol1
:Alternativamente (pode ser preferido), como sugere @mozway em um comentário abaixo:
Outra abordagem, usando
list comprehension
enumpy
:Saída:
Você pode usar isto: