我是python的新手。 我在处理csv文件时遇到问题。 这是一个具有12行标题的文件,在启动数据之后。 我必须从列中读取一些数据(确定可以),经过详细说明,我必须在每行中添加一个具有值的列,但第一列中没有任何ID,并且该列必须开始从第13行开始,而不是从第一行开始。
我尝试使用pandas库,但是它不起作用
df = pd.read_csv("./1540476113.gt.tie")
df["package"] = pd.Series(packages)
df.to_csv("./1540476113.gt.tie", sep = "\t")
其中package是列的名称(但我也知道索引),而package是字符串数组(我必须写的元素)。 该代码有效,但从第一行开始添加(我不知道如何设置偏移量),并将第一列中的索引(不需要)和每个元素之前的char'添加到文件中。 sep是每一列的分隔符。
样本输入数据:
# TIE output version: 1.0 (text format)
# generated by: . -a ndping_1.0 -r /home/giuseppe/Scrivania/gruppo30/1540476113/traffic.pcap
# Working Mode: off-line
# Session Type: biflow
# 1 plugins enabled: ndping
# begin trace interval: 1540476116.42434
# begin TIE Table
# id src_ip dst_ip proto sport dport dwpkts uppkts dwbytes upbytes t_start t_last app_id sub_id app_details confidence
17 192.168.20.105 216.58.205.42 6 50854 443 8 9 1507 1728 1540476136.698920 1540476136.879543 501 0 Google 100
26 192.168.20.105 151.101.66.202 6 40107 443 15 18 5874 1882 1540476194.196948 1540476204.641949 501 0 SSL_with_certificate 100
27 192.168.20.105 31.13.90.2 6 48133 443 10 15 4991 1598 1540476194.218949 1540476196.358946 501 0 Facebook 100
示例输出数据:
# TIE output version: 1.0 (text format)
# generated by: . -a ndping_1.0 -r /home/giuseppe/Scrivania/gruppo30/1540476113/traffic.pcap
# Working Mode: off-line
# Session Type: biflow
# 1 plugins enabled: ndping
# begin trace interval: 1540476116.42434
# begin TIE Table
# id src_ip dst_ip proto sport dport dwpkts uppkts dwbytes upbytes t_start t_last app_id sub_id app_details confidence package
17 192.168.20.105 216.58.205.42 6 50854 443 8 9 1507 1728 1540476136.698920 1540476136.879543 501 0 Google 100 N/C
26 192.168.20.105 151.101.66.202 6 40107 443 15 18 5874 1882 1540476194.196948 1540476204.641949 501 0 SSL_with_certificate 100 com.joelapenna.foursquared
27 192.168.20.105 31.13.90.2 6 48133 443 10 15 4991 1598 1540476194.218949 1540476196.358946 501 0 Facebook 100 com.joelapenna.foursquared
38 192.168.20.105 13.32.71.69 6 52108 443 9 12 5297 2062 1540476195.492946 1540476308.604998 501 0 SSL_with_certificate 100 com.joelapenna.foursquared
0 34.246.212.92 192.168.20.105 6 443 37981 3 2 187 98 1540476116.042434 1540476189.868844 0 0 Other TCP 0 N/C
29 192.168.20.105 13.32.123.222 6 36481 443 11 15 6638 1914 1540476194.376945 1540476308.572998 501 0 SSL_with_certificate 100 com.joelapenna.foursquared
31 192.168.20.105 8.8.8.8 17 1219 53 1 1 253 68 1540476194.898945 1540476194.931198 501 0 DNS 100
我不在乎alinemen,每列的定界符是'\ t'。
答案 0 :(得分:0)
您可以通过向read_csv
传递一些参数来跳到数据。
df = pd.read_csv("./1540476113.gt.tie", header=None, skiprows=12)
df["package"] = pd.Series(packages)
df.to_csv("./1540476113.gt.tie", sep = "\t")
然后显式命名您的列:
df.columns = [col_names]
如果第13行是具有所需列名的标题行,则不要传递header=None
参数。
在文档here中查看更多信息。