I-Code nach der Verwendung CSV-Datei ist abhängig von Haupt .csv Spalte 8 aufzuspalten:Spliting .csv fügen zusätzliche Spalte für jede neue CSV-
import csv
import pandas as pd
def spliteCsv(input,output):
print(input)
data=set()
with open (input) as csvfile:
file = csv.reader (csvfile,delimiter=',')
next (file,None)
for row in file:
if row[7] =='':
data.add (-1)
else:
data.add (int(row[7]))
data = list(data)
ofile = pd.read_csv (input, sep=',')
data.append(max(data)+1)
for d in data:
csv_temp = ofile[ofile['col8'].fillna (max(data)).astype(int) == d]
csv_temp.to_csv ('%s_%s.csv'%(output,d),sep=',')
return
hier ist das, was ich brauche:
col1 col2 col3 col4 col5 col6 col7 col8 col9
1 a k8 5
2 j l9 5
3 k o0 5
4 l m7 5
und hier ist der Code-Ausgang:
col0 col1 col2 col3 col4 col5 col6 col7 col8 col9
0 1 a k8 5
1 2 j l9 5
2 3 k o0 5
3 4 l m7 5
, wie Sie verstehen, es zusätzliche Spalte als erste Spalte einzufügen, dieenthält
Edit:
source.csv:
frame.number frame.time_epoch ip.src ip.dst tcp.srcport tcp.dstport tcp.seq tcp.stream frame.len tcp.flags _ws.col.Info
1 1501756607 192.168.1.10 37.48.64.201 47159 7095 1 1 215 0x00000018 47159 → 7095 [PSH, ACK] Seq=1 Ack=1 Win=2235 Len=149 TSval=19928932 TSecr=2777283254
2 1501756607 37.48.64.201 192.168.1.10 7095 47159 1 2 66 0x00000010 7095 → 47159 [ACK] Seq=1 Ack=150 Win=91 Len=0 TSval=2777285491 TSecr=19928932
3 1501756607 37.48.64.201 192.168.1.10 7095 47159 1 1 215 0x00000018 7095 → 47159 [PSH, ACK] Seq=1 Ack=150 Win=91 Len=149 TSval=2777285491 TSecr=19928932
4 1501756607 192.168.1.10 37.48.64.201 47159 7095 150 2 215 0x00000018 47159 → 7095 [PSH, ACK] Seq=150 Ack=150 Win=2235 Len=149 TSval=19928977 TSecr=2777285491
5 1501756607 192.168.1.10 37.48.64.201 47159 7095 299 2 343 0x00000018 47159 → 7095 [PSH, ACK] Seq=299 Ack=150 Win=2235 Len=277 TSval=19928979 TSecr=2777285491
6 1501756607 37.48.64.201 192.168.1.10 7095 47159 150 66 0x00000010 7095 → 47159 [ACK] Seq=150 Ack=576 Win=91 Len=0 TSval=2777285537 TSecr=19928977
Ausgabedateien:
Datei 1:
frame.number frame.time_epoch ip.src ip.dst tcp.srcport tcp.dstport tcp.seq tcp.stream frame.len tcp.flags _ws.col.Info
1 1501756607 192.168.1.10 37.48.64.201 47159 7095 1 1 215 0x00000018 47159 → 7095 [PSH, ACK] Seq=1 Ack=1 Win=2235 Len=149 TSval=19928932 TSecr=2777283254
3 1501756607 37.48.64.201 192.168.1.10 7095 47159 1 1 215 0x00000018 7095 → 47159 [PSH, ACK] Seq=1 Ack=150 Win=91 Len=149 TSval=2777285491 TSecr=19928932
Datei 2:
frame.number frame.time_epoch ip.src ip.dst tcp.srcport tcp.dstport tcp.seq tcp.stream frame.len tcp.flags _ws.col.Info
2 1501756607 37.48.64.201 192.168.1.10 7095 47159 1 2 66 0x00000010 7095 → 47159 [ACK] Seq=1 Ack=150 Win=91 Len=0 TSval=2777285491 TSecr=19928932
4 1501756607 192.168.1.10 37.48.64.201 47159 7095 150 2 215 0x00000018 47159 → 7095 [PSH, ACK] Seq=150 Ack=150 Win=2235 Len=149 TSval=19928977 TSecr=2777285491
5 1501756607 192.168.1.10 37.48.64.201 47159 7095 299 2 343 0x00000018 47159 → 7095 [PSH, ACK] Seq=299 Ack=150 Win=2235 Len=277 TSval=19928979 TSecr=2777285491
Datei 3:
frame.number frame.time_epoch ip.src ip.dst tcp.srcport tcp.dstport tcp.seq tcp.stream frame.len tcp.flags _ws.col.Info
6 1501756607 37.48.64.201 192.168.1.10 7095 47159 150 3 66 0x00000010 7095 → 47159 [ACK] Seq=150 Ack=576 Win=91 Len=0 TSval=2777285537 TSecr=19928977
Ich denke, es ein besserer ist (__vectorized__) Weg, dies zu tun ... Können Sie Ihre Quell-CSV-Datei posten, anhand derer Sie den gewünschten Datensatz aus Ihrer Frage erhalten? – MaxU
Der erfasste Datenverkehr im CSV-Format mit den folgenden Kopfzeilen: frame.number, frame.time_epoch, ip.src, ip.dst, tcp.srcport, tcp.dstport, tcp.seq, tcp.stream, frame.len, tcp .flags, _ws.col.Info. die alle in einer Zeichenfolge gespeichert werden. und ich spalte hängt von tcp.stream Nummer ab. – user3806649
Können Sie [Ihre Frage aktualisieren] (https://stackoverflow.com/posts/45722843/edit) mit dem entsprechenden Beispieldatensatz und Ihrem gewünschten (resultierenden) Datensatz? – MaxU