Gostaria de selecionar aleatoriamente algumas colunas de um dataframe bidimensional e embaralhar os valores dentro dessas colunas. Posso embaralhar facilmente todos os valores (em colunas) do dataframe, mas pretendo fazer isso apenas para alguns selecionados aleatoriamente.
Por exemplo, pegue o dataframe 6x6 abaixo:
0 1 2 3 4 5
0 5 3 7 1 2 9
1 1 7 5 3 0 8
2 0 2 7 1 6 5
3 8 4 2 1 9 7
4 2 9 5 6 3 4
5 7 5 8 2 1 0
Selecionando aleatoriamente algumas das 6 colunas, observe a seguinte saída:
0 1 2 3 4 5
0 2 9 7 1 2 4
1 5 7 5 3 0 0
2 7 2 7 1 6 5
3 8 3 2 1 9 7
4 1 5 5 6 3 9
5 0 4 8 2 1 8
A imagem acima mostra a 1ª, a 2ª e a última coluna embaralhadas, e todas as outras permanecem como estão.
O código a seguir me permite embaralhar todas as colunas:
import numpy as np
df = np.random.random((6,6))
np.random.random(df)
E, ainda assim, depois de muitas tentativas, não consegui modificar isso para selecionar apenas (aleatoriamente) algumas colunas. Qualquer conselho será bem-vindo. Obrigado.
Supondo este exemplo de entrada:
Eu usaria:
Você pode até vetorizar a última etapa
permuted
se a eficiência for importante:Exemplo de saída:
IIUC,
Saída: