Удаление строк из CSV-файла перед конкретной строкой на основе значений в этой строке с помощью Pandas - PullRequest
0 голосов
/ 22 марта 2019

У меня есть CSV-файл, и это выглядит следующим образом. Я хочу удалить все строки перед значениями одной строки [Station Mac, Первый раз, Последний раз, Power, пакеты, BSSID, Зонды ESSID] для дальнейшей обработки. Я использую библиотеку panadad в python для чтения этого файла csv. Я могу удалить отдельные строки по индексу, но мой файл перезагрузить после FES секунд и индекс строки может быть изменен. Как я должен это сделать. Ваша помощь будет оценена.

BSSID, First time seen, Last time seen, channel, Speed, Privacy, Cipher, Authentication, Power, # beacons, # IV, LAN IP, ID-length, ESSID, Key
52:62:00:00:03:01, 2018-06-22 11:23:45, 2018-06-22 11:23:45,  9,  -1, , ,   ,  -1,        0,        0,   0.  0.  0.  0,   0, , 
14:30:04:B2:F5:42, 2018-06-22 11:24:04, 2018-06-22 11:24:04, 11,  -1, WPA, ,   , -88,        0,        1,   0.  0.  0.  0,   0, , 
14:30:04:D6C:95:62, 2018-06-22 11:23:50, 2018-06-22 11:24:08,  6,  -1, WPA, ,   , -85,        0,        2,   0.  0.  0.  0,   0, , 
DC:09:4C:BF:6B:13, 2018-06-22 11:23:58, 2018-06-22 11:24:06,  7,  54, WPA2, CCMP, PSK, -75,        2,        0,   0.  0.  0.  0,  12, Death Stroke, 
B4:FB:N4:97:F8:03, 2018-06-22 11:23:46, 2018-06-22 11:24:12,  6,  54, WPA2, CCMP, PSK, -74,        6,        6,   0.  0.  0.  0,   3, CSE, 
C4:A8:1D:9K:B9:E8, 2018-06-22 11:23:57, 2018-06-22 11:24:12, 11,  22, WPA2 WPA, CCMP TKIP, PSK, -71,        1,        1,   0.  0.  0.  0,  20, SE-IX (Faculty Only), 
78:8A:90:81:C1:31, 2018-06-22 11:23:54, 2018-06-22 11:24:06,  6,  54, WPA2, CCMP, PSK, -71,        4,        0,   0.  0.  0.  0,   3, CSE, 
78:8A:20:49:^9:D1, 2018-06-22 11:23:44, 2018-06-22 11:24:12, 11,  54, WPA2, CCMP, PSK, -41,       58,       21,   0.  0.  0.  0,   3, CSE, 
14:30:04:B3:FD:A2, 2018-06-22 11:23:46, 2018-06-22 11:24:12,  6,  -1, , ,   ,  -1,        0,        0,   0.  0.  0.  0,   0, , 
14:30:KL:B3:52:22, 2018-06-22 11:23:47, 2018-06-22 11:24:12,  2,  -1, WPA, ,   ,  -1,        0,       50,   0.  0.  0.  0,   0, , 
14:30:04:LC:9B:E2, 2018-06-22 11:23:48, 2018-06-22 11:24:01,  3,  -1, , ,   ,  -1,        0,        0,   0.  0.  0.  0,   0, , 
14:U0:04:B3:52:62, 2018-06-22 11:23:49, 2018-06-22 11:24:12, 11,  -1, WPA, ,   ,  -1,        0,       92,   0.  0.  0.  0,   0, , 

Station MAC, First time seen, Last time seen, Power, # packets, BSSID, Probed ESSIDs
macaddrees, 2018-06-22 11:23:45, 2018-06-22 11:23:45, -78,        8, 52:62:90:00:03:01,
macaddress, 2018-06-22 11:23:46, 2018-06-22 11:24:05, -73,        4, 14:30:04:BB:19:A2,
macaddress, 2018-06-22 11:23:52, 2018-06-22 11:24:12, -73,        5, (not associated) ,
macaddress, 2018-06-22 11:23:43, 2018-06-22 11:24:12, -71,        9, not assocaited,
macadress, 2018-06-22 11:23:52, 2018-06-22 11:23:52, -70,        2, (not associated) ,
macaddress, 2018-06-22 11:23:48, 2018-06-22 11:24:01, -69,       11, NAN,
macaddress, 2018-06-22 11:23:46, 2018-06-22 11:24:12, -65,       15, NAN,
macaddress, 2018-06-22 11:24:12, 2018-06-22 11:24:12, -62,        2, (not associated) ,
macaddress, 2018-06-22 11:24:01, 2018-06-22 11:24:12, -54,        2, NAN,
macaddress, 2018-06-22 11:23:49, 2018-06-22 11:24:12, -48,       97, NAN,
macaddress, 2018-06-22 11:23:43, 2018-06-22 11:24:12, -35,       54, NAN,UET Smart University
macaddress, 2018-06-22 11:23:47, 2018-06-22 11:24:03, -23,      108, NAN,
macaddress, 2018-06-22 11:23:49, 2018-06-22 11:23:49,  -1,        9, NAN,

Ответы [ 2 ]

1 голос
/ 22 марта 2019

Мы можем прочитать файл и затем split его в список s с 2 строками, одна со всем перед пустой строкой (используя \n\n в качестве разделителя) и одна со всем после. Когда это сделано, мы можем прочитать эти строки как CSV в отдельные DataFrames:

with open('test.csv') as f:
    s = f.read().split('\n\n')

df1 = pd.read_csv(pd.compat.StringIO(s[0]))
df2 = pd.read_csv(pd.compat.StringIO(s[1]))

df1:

                BSSID       First time seen        Last time seen   channel  \
0   52:62:00:00:03:01   2018-06-22 11:23:45   2018-06-22 11:23:45         9   
1   14:30:04:B2:F5:42   2018-06-22 11:24:04   2018-06-22 11:24:04        11   
2  14:30:04:D6C:95:62   2018-06-22 11:23:50   2018-06-22 11:24:08         6   
3   DC:09:4C:BF:6B:13   2018-06-22 11:23:58   2018-06-22 11:24:06         7   
4   B4:FB:N4:97:F8:03   2018-06-22 11:23:46   2018-06-22 11:24:12         6   
...

df2:

  Station MAC       First time seen        Last time seen   Power   # packets  \
0  macaddrees   2018-06-22 11:23:45   2018-06-22 11:23:45     -78           8   
1  macaddress   2018-06-22 11:23:46   2018-06-22 11:24:05     -73           4   
2  macaddress   2018-06-22 11:23:52   2018-06-22 11:24:12     -73           5   
3  macaddress   2018-06-22 11:23:43   2018-06-22 11:24:12     -71           9   
4   macadress   2018-06-22 11:23:52   2018-06-22 11:23:52     -70           2   
0 голосов
/ 22 марта 2019

Если число строк перед Station Mac в используемых вами файлах совпадает, и вы знаете, сколько их, вы можете просто пропустить эти строки, используя pandas read_csv

df1 = pd.read_csv ('filename.csv', skiprows = 14)

где 14 (просто считая количество строк перед Station Mac) - это количество строк, которые вы хотите пропустить. Вы также можете использовать список вместо целого числа, чтобы указать, какие строки вы хотите пропустить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...