Risparmiare di più array in un file csv con i nomi di colonna

È così semplice come sembra, non riuscivo a trovare qualsiasi soluzione per la mia domanda online. Fondamentalmente, ho due array a e b che voglio salvare in un file csv. Ci saranno due colonne. Voglio aggiungere i nomi di colonna. Di seguito il codice che uso per il dump array in un file csv.

from np import array, savetxt

a = array([1,2,3,4])
b = array([5,6,7,8])
savetxt('submission2.csv', zip(a,b), delimiter=',', fmt='%f')

Come posso aggiungere i nomi di colonna? Vorrei che il file csv a guardare come

Name1 Name2
 1     5
 2     6
 3     7
 4     8

È così strano che questa opzione non è in savetxt funzione. header opzione di non farlo, perché semplicemente incolla di un commento in prima cella. Grazie.

Edit: Matrici

La prima riga è dove si dovrebbe mettere i nomi di colonna; vuoi nomi di riga, invece? Si può dare un esempio di come si desidera che il file a guardare come?
aggiunti dettagli

OriginaleL’autore Koba | 2015-11-03

5 risposte

  1. 9

    Utilizzare il header opzione, come questo:

    >>> import numpy
    >>> a = numpy.array([[1,2],[3,4],[5,6]])
    >>> numpy.savetxt("foo.csv", a, delimiter=',', header="A,B", comments="")

    Il file risultante assomiglia a questo:

    A,B
    1.000000000000000000e+00,2.000000000000000000e+00
    3.000000000000000000e+00,4.000000000000000000e+00
    5.000000000000000000e+00,6.000000000000000000e+00
    c’è un modo per aggiungere la colonna di un file csv esistente? Inoltre, come posso sbarazzarsi di e?
    è possibile modificare il formato con il fmt kwarg. Il valore di default è %.18e che include il. Provare %f o %g a seconda delle vostre esigenze

    OriginaleL’autore Burhan Khalid

  2. 8

    Si può fare con panda pacchetto facilmente:

    import pandas as pd
    import numpy as np
    
    a = np.array([1,2,3,4])
    b = np.array([5,6,7,8])
    
    df = pd.DataFrame({"name1" : a, "name2" : b})
    df.to_csv("submission2.csv", index=False)

    OriginaleL’autore Anton Protopopov

  3. 1

    si può fare come questo:

    import np import array, savetxt
    
    a = array([1,2,3,4])
    b = array([5,6,7,8])
    f = open("submission2.csv", "w")
    f.write("{},{}\n".format("Name1", "Name2"))
    for x in zip(a, b):
        f.write("{},{}\n".format(x[0], x[1]))
    f.close()

    OriginaleL’autore Hackaholic

  4. 1

    Nota che savetxt (e loadtxt) prende anche handle di file.

    Quindi, se si desidera una più avanzata di intestazione si può fare questo:

    a = array([1,2,3,4])
    b = array([5,6,7,8])
    with open('submission2.csv','w') as f:
        f.write('# This is a very complex header\n')
        f.write('A,B\n')
        savetxt(f, zip(a,b), delimiter=',', fmt='%f')

    O, come è già stato notato, utilizzare il header=str(...) argomento.

    OriginaleL’autore zeroth

  5. 0

    Ho trovato una soluzione per il salvataggio di più numpy 1D array di colonne:

     import numpy as np
     data = []
     for i in single_np_arrays:
         data.append(i)
     data = np.array(data).T  #transpose the array to have proper columns
     np.savetxt('columns_from_np_arrays.csv',data,delimiter=',')

    OriginaleL’autore Dawid

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *