我是Pandas和Python的新手。
我们有一个防火墙应用程序,可以CSV格式解析我们的ACL。 问题是 - 提供太多信息 - 数据格式使信息无用
到目前为止,我们一直在手动编辑这些查询。
我已经弄清楚如何使用熊猫来拉动"我们需要的列。 现在我需要将其中一列重新配置为正确的格式。
到目前为止,我的代码看起来像这样:
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
此时我要做的是将最后一行格式化为 将tcp移到端口号前面,然后删除' /'。 最终结果将是从ssh / tcp到tcp ssh
出于某种原因,我无法解决这个问题。
请帮忙。谢谢,
答案 0 :(得分:1)
apply会将函数应用于系列中的所有内容。 事情是使功能。我把它称为开关和' x'是该系列中的所有数据。
def switch(x):
a = x.split('/')
a.reverse()
return ' '.join(a)
df['Service'].apply(switch)
答案 1 :(得分: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]