2016-03-24 5 views
0

Я новичок в Pandas и Python.Форматирование столбца с pandas

У нас есть приложение межсетевого экрана, которое анализирует наши ACL в формате CSV. Проблема заключается в она обеспечивает слишком много информации -The формат данных делает данные бесполезный

Мы уже редактировали эти запросы вручную до сих пор.

Я выяснил, как использовать панды, чтобы «вытащить» нужные нам столбцы. Теперь мне нужно переконфигурировать один из столбцов в соответствующем формате.

Пока мой код выглядит следующим образом:

import pandas as pd 
    f=pd.read_csv("/Volumes/Untitled/ACL-SOURCE.csv") 
    keep_col = ['Device name','Source','Destination','Service'] 
    new_f = f[keep_col] 

# this pulls the 4 columns I ned out of the original 20 column CSV. 

# If I do a print of 'new_f" i get the following: 

    Device name  Source Destination  Service 
0 ACL-NAME-V1  ABC-123  MEC-KLM  ssh/tcp 
1 ACL-NAME-V1  ABC-123  MEC-KLM  3306/tcp 
2 ACL-NAME-V1  MEC-456  MEC-KLM  ssh/tcp 
3 ACL-NAME-V1  MEC-456  MEC-KLM  3306/tcp 
4 ACL-NAME-V1  MEC-456  MEC-KLM  4444/tcp 
5 ACL-NAME-V1  MEC-456  MEC-KLM  8888/tcp 
6 ACL-NAME-V1  MEC-456  MEC-KLM 4567-4568/tcp 
7 ACL-NAME-V1  MEC-456  MEC-KLM   icmp 

На данный момент то, что я хочу сделать, это отформатировать последнюю строку Переместить ТКТ перед номером порта и удалите «/». конечный результат будет от ssh/tcp до tcp ssh

по какой-то причине я не могу обмотать голову вокруг этого.

Пожалуйста, помогите. Спасибо,

+0

Я действительно не понимаю, что вы хотите, чтобы «последняя строка» и столбец? выглядеть? Приведите пример? из чего это (что, я думаю, у нас есть) и чего вы хотите? И это только последняя строка с icmp? Является ли проблема всегда последней строкой или строками с icmp? или это связано с ssh? Показать исходный текст? – dartdog

ответ

0

Вы пытались создать новый столбец с данными из столбца службы обрабатываются:

import pandas as pd 
    f=pd.read_csv("/Volumes/Untitled/ACL-SOURCE.csv") 
    f.assign(srv = f['Service'].split('/')[1] + " " + f['Service'].split('/')[0]) 
    keep_col = ['Device name','Source','Destination','srv'] 
    new_f = f[keep_col] 
+0

При попадании на эту строку вы получите ошибку индекса. У службы Line 7 нет разделения «/». – Back2Basics

1

применять будет применять функцию ко всему в вашей серии. Дело в том, чтобы сделать функцию. Я назвал его переключателем, а «х» - это все данные в серии.

def switch(x): 
    a = x.split('/') 
    a.reverse() 
    return ' '.join(a) 

df['Service'].apply(switch) 
+0

Это works.but как добавить вновь отформатированный «сервис» обратно в таблицу? – fl31

+0

Вы можете использовать df ['Service'] = df ['Service']. Apply (switch) – Back2Basics

+0

Это работало как шарм !! – fl31

Смежные вопросы