用pandas格式化列

2024-10-06 12:23:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我不熟悉熊猫和Python。在

我们的应用程序有一个CSV格式的ACLs。 问题是 -它提供了太多的信息 -数据的格式使信息毫无用处

到目前为止,我们一直在手工编辑这些查询。在

我已经想出了如何用熊猫“拉”出我们需要的专栏。 现在我需要将其中一列重新配置为正确的格式。在

到目前为止,我的代码如下:

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

不知为什么,我不能把我的头绕在这上面。在

请帮忙。谢谢


Tags: csvthename信息格式colsshtcp
2条回答

您是否尝试使用已处理的服务列中的数据创建新列:

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]

apply将对系列中的所有内容应用函数。 关键是做这个函数。我把它叫做switch,'x'是系列中所有的数据。在

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

df['Service'].apply(switch)

相关问题 更多 >