Referente à geração de intersecção e união de dois arquivos csv

3

Eu tenho dois arquivos csv, existem algumas colunas de sobreposição entre esses dois arquivos. Suponha que um arquivo seja chamado como A.csv e outro seja chamado como B.csv. A intersecção de A e B é chamada de C.

Eu gostaria de gerar três novos arquivos csv: C; o subconjunto de B depois de subtrair C dele, que é chamado como D; a união de A e D, que é chamada de E.

Existe alguma maneira de fazer isso no Linux / Unix usando o comando sem aplicar linguagens de programação pesadas?

    
por user785099 07.09.2012 / 21:58

1 resposta

2

Eu usaria python para isso, não se deixe intimidar pelo python, é ótimo nesse tipo de coisa. Minha solução (áspera e não testada) para o seu problema seria:

f_csv_1 = open("csv1.csv")
f_csv_2 = open("csv2.csv")

csv_1 = f_csv_1.readlines()
csv_2 = f_csv_2.readlines()

f_csv_1.close()
f_csv_2.close()

intersection = list(set(csv_1) & set(csv_2))
union = list(set(csv_1) | set(csv_2))

out_1 = open("intersection.csv", "w")

for row in intersection:
      out_1.write("%s" % row)

out_2 = open("union.csv", "w")

for row in union:
      out_2.write("%s" % row)

out_1.close()
out_2.close()
    
por 09.09.2012 / 08:24