Como faço para transpor uma tabela com valores de chave repetidos?

2

Eu tenho uma tabela assim:

Column A | Column B
      10 |      0.1
      10 |      0.2
      10 |      0.3
      20 |      0.4
      20 |      0.5
      20 |      0.6

Eu preciso transpor para ficar assim:

 10 | 20
0.1 | 0.4
0.2 | 0.5
0.3 | 0.6

Quase 2k valores diferentes na Coluna A, para cada um há exatamente valores 1k na coluna B, que podem se repetir.

Existe uma maneira automatizada de fazer isso?

    
por RSFalcon7 15.08.2018 / 19:19

2 respostas

1

Este script python funcionou:

import numpy as np

data = np.genfromtxt('inputcsv', delimiter=',')
keys = sorted(set(data[:,0]))

result = np.array([])

for k in keys:
    col = data[np.where(data[:,0] == k)][:,1]
    if not result.any():
        result = col
    else:
        result = np.vstack((result, col))
    print('key {0} finished'.format(k))

np.savetxt('final.csv', np.transpose(result), delimiter=',')
    
por 16.08.2018 / 19:26
0

Eu faria um script PHP:

<?php
$file = fopen($argv[1], "r");
while(!feof($file)) {
    $line =  trim(fgets($file));
    if ($line=='') {continue;}
    $line = explode(' ', $line);
    $a[$line[0]] []= $line[1];
}
fclose($file);
foreach ($a as $k=>$v) {
    echo $k,"\t";
}
echo "\n";
$a = array_map(null, ...$a);
foreach($a as $b){
    echo implode("\t",$b),"\n";
}

Arquivo de entrada (separado por tabulação):

10      0.1
10      0.2
10      0.3
20      0.4
20      0.5
20      0.6
30      0.3
10      0.9

Comando:

php script inputfile

Saída (separada por tabulação):

10      20      30
0.1     0.4     0.3
0.2     0.5
0.3     0.6
0.9
    
por 28.08.2018 / 16:16