Voglio aggiungere (unire) tutti i file csv in una cartella usando i panda di Python.Perché l'ordine delle colonne cambia mentre si aggiungono i datafram dei panda?
Per esempio: Say cartella è due file csv test1.csv
e test2.csv
come segue:
A_Id P_Id CN1 CN2 CN3
AAA 111 702 709 740
BBB 222 1727 1734 1778
e
A_Id P_Id CN1 CN2 CN3
CCC 333 710 750 750
DDD 444 180 734 778
Quindi lo script Python che ho scritto è stato il seguente:
#!/usr/bin/python
import pandas as pd
import glob
all_data = pd.DataFrame()
for f in glob.glob("testfolder/*.csv"):
df = pd.read_csv(f)
all_data = all_data.append(df)
all_data.to_csv('testfolder/combined.csv')
Anche se il combined.csv
sembra avere tutto il file allegati, essa appare come segue:
CN1 CN2 CN3 A_Id P_Id
0 710 750 750 CCC 333
1 180 734 778 DDD 444
0 702 709 740 AAA 111
1 1727 1734 1778 BBB 222
Dove come dovrebbe apparire così:
A_ID P_Id CN1 CN2 CN2
AAA 111 702 709 740
BBB 222 1727 1734 1778
CCC 333 110 356 123
DDD 444 220 256 223
- Perché sono le prime due colonne spostato alla fine?
- Perché viene aggiunto nella prima riga anziché nell'ultima riga?
Cosa mi manca? E come posso ottenere uno 0 e un 1 nella prima colonna?
P.S: Poiché si tratta di file csv di grandi dimensioni, ho pensato di utilizzare i panda.
Quale versione di panda utilizza? Perché funziona bene in 0.17.0. – jezrael
Penso che il problema sia con il formato di csv - prova dopo la riga 'df = pd.read_csv (f)' aggiungi 'print df.head()' per controllarlo. – jezrael
E penso che tu abbia letto l'output come input 'glob.glob (" testfolder/*. Csv "):', perché l'output è scrivere nella directory di input: 'all_data.to_csv ('testfolder/combined.csv')', hai per cambiare directory a 'all_data.to_csv ('out/combined.csv')' – jezrael