2016-11-18 4 views
0

Ich habe eine CSV-Datei, die zwei Datensätze auf dem gleichen Blatt hat. Ich habe meine Nachforschungen gemacht und das, was ich am nächsten fand, ist das, was ich angehängt habe. Das Problem, das ich habe, ist, dass beide keine Tabellen, ihre separaten Datensätze sind; beide sind durch eine Anzahl von Zeilen getrennt. Ich möchte jeden Datensatz als separate CSV-Datei speichern. Ist das in Python möglich? Bitte geben Sie Ihre freundliche Unterstützung.Zwei Datensätze in CSV-Datei

Python CSV module: How can I account for multiple tables within the same file?

Erster Satz:

Presented_By:  Source:    City: 
Chris    Realtor    Knoxville 
John     Engineer   Lantana 
Wade     Doctor    Birmingham 

Second Set:

DriveBy    15 
BillBoard    45 
Social Media   85 

Meine Quelle ist eine Excel-Datei, die ich in eine CSV-Datei zu konvertieren.

import pandas as pd 
data_xls = pd.read_excel('T:\DataDump\Matthews\REPORT 11.13.16.xlsm', 'InfoCenterTracker', index_col=None) 
data_xls.to_csv('your_csv.csv', encoding='utf-8') 

second_set = pd.read_csv('your_csv.csv',skiprows=[10,11,12,13,14,15,16,17,18,19,20,21,22,23,23]) 
+0

Sind die Daten immer in der gleicher Ort? Wenn dies der Fall ist, verwenden Sie die Antwort von @kilojules. Wenn nicht, gibt es einen Weg, leicht zu erkennen, wann der zweite Satz startet? z.B. Zwei leere Zeilen. – Batman

+0

Können Sie Ihren Quellcode zu der Frage hinzufügen, damit wir sehen können, was Sie getan haben? – ecounysis

+0

Ich habe meinen ursprünglichen Beitrag aktualisiert, um meinen Code wiederzugeben. Auch nachdem ich mein Python-Skript bearbeitet habe, erscheint es immer noch im selben Format wie bei der ersten Konvertierung in CSV. –

Antwort

1

Verwenden skiprows in Pandas' read_csv

$ cat d.dat 
Presented_By:  Source:    City: 
Chris    Realtor    Knoxville 
John     Engineer   Lantana 
Wade     Doctor    Birmingham 
DriveBy    15 
BillBoard    45 
Social Media   85 

In [1]: import pandas as pd 
In [2]: pd.read_csv('d.dat',skiprows=[0,1,2,3]) 
Out[2]: 
    DriveBy    15 
0 BillBoard    45 
1 Social Media   85 

In [3]: pd.read_csv('d.dat',skiprows=[4,5,6]) 
Out[3]: 
     Presented_By:  Source:    City: 
0 Chris    Realtor    Knoxv... 
1 John     Engineer   Lantana 
2 Wade     Doctor    Birmi... 

Sie können erkennen, welche Zeilen bei der Suche nach überspringen, wenn die csv hat 2 Einträge nicht 3

In [25]: for n, line in enumerate(open('d.dat','r').readlines()): 
    ...:  if len(line.split()) !=3: 
    ...:  breakpoint = n 
    ...:  
In [26]: pd.read_csv('d.dat',skiprows=range(breakpoint-1)) 
Out[26]: 
    DriveBy    15 
0 BillBoard    45 
1 Social Media   85 

In [27]: pd.read_csv('d.dat',skiprows=range(breakpoint-1, n+1)) 
Out[27]: 
     Presented_By:  Source:    City: 
0 Chris    Realtor    Knoxv... 
1 John     Engineer   Lantana 
2 Wade     Doctor    Birmi... 
+0

Danke Kilojoules, der erste Satz beginnt am Anfang, also müssen keine Zeilen übersprungen werden, aber der zweite Satz wird genau nach 14 Zeilen gesetzt. –

+0

@Pythoner Ich habe meine Antwort aktualisiert, um den Punkt zu finden, an dem sich das Dateiformat ändert – kilojoules

Verwandte Themen