如何将可变结果附加到csv中的特定列?

时间:2018-10-05 02:22:47

标签: python csv logging

给出:

sha1_vsdt.csv

SHA-1,VSDT,
0191a23ee122bdb0c69008971e365ec530bf03f5,MIME 6010-0,
02b809d4edee752d9286677ea30e8a76114aa324,Microsoft RTF 6008-0,undet

trendx.log

1537761898  0   1   1   1537733097  1537733098  1537733097  8224    74  215552  06a60c6018a42b1db22e3bf8620861711401c4bb.crdownload TROJ.Win32.TRX.XXPE50FFF026 c:\users\administrator\desktop\downloader\download\     TRENDX  172.20.4.179    Administrator           c1f387a6f45414366755b0a1874b36ff9596d8ad        AABACACCBIiAgXWACAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=        TSPY_HPDYRE.SM;TSPY_GOLROTED.ACS;TROJ_GEN.R021C0FFO15;TROJ_GEN.R021C0DLO15;Ransom_HPCRYPTESLA.SM2;

任务:

我的任务是将sha1_vsdt.csv第一栏中的字符串与我的Trendx.log文件进行匹配。一旦找到匹配项,则应在日志文件中获取描述,并将其放在csv的第三列中,否则将无法检测到。

我已经做了匹配的字符串,并且得到了结果,但是我不知道如何将结果转储到csv的第三列中。我应该使用什么?我可以使用任何库吗?

示例:如果0191a23ee122bdb0c69008971e365ec530bf03f5在日志文件中找到匹配项,请获取说明,然后将其放在第三列

SHA-1,VSDT,
0191a23ee122bdb0c69008971e365ec530bf03f5,MIME 6010-0,

结果将如下所示:

SHA-1,VSDT,DESC
0191a23ee122bdb0c69008971e365ec530bf03f5,MIME 6010-0,TROJ.Win32.TRX.XXPE50FFF026

代码:我已经可以得到结果了,但是我不知道如何将变量result转储到csv的第三列中,请帮忙

import numpy as np
import pandas as pd
import csv


pd.set_option('display.max_rows', 1000)
logtext = "trendx.log"
#Log data into dataframe using genfromtxt
logdata = np.genfromtxt(logtext + ".txt",invalid_raise = False,dtype=str, comments=None,usecols=np.arange(16))
logframe = pd.DataFrame(logdata)
#print (logframe.head())

#Dataframe trimmed to use only SHA1, PRG and IP
df2=(logframe[[10,11]]).rename(columns={10:'SHA-1', 11: 'DESC'})
#print (df2.head())

#sha1_vsdt data into dataframe using read_csv
df1=pd.read_csv("sha1_vsdt.csv",delimiter=",",error_bad_lines=False,engine = 'python',quoting=3)
#Using merge to compare the two CSV

df = pd.merge(df1, df2, on='SHA-1', how='left').fillna('undetected')
result = (df[['DESC']])
print result

我的输出:

                              DESC
0                       undetected
1                       undetected
2                       undetected
3                       undetected
4                       undetected
5                       undetected
6                       undetected
7                       undetected
8                       undetected
9                       undetected
10                      undetected
11                      undetected
12                      undetected
13     TROJ.Win32.TRX.XXPE50FFF026
14     TROJ.Win32.TRX.XXPE50FFF026

期望的CSV输出:

SHA-1,VSDT,DESC
0191a23ee122bdb0c69008971e365ec530bf03f5,MIME 6010-0,TROJ.Win32.TRX.XXPE50FFF026
02b809d4edee752d9286677ea30e8a76114aa324,Microsoft RTF 6008-0,undetected

1 个答案:

答案 0 :(得分:0)

代替最后两行,代替下面两行。

df1 ['DESC'] = df ['DESC']。values

df1.to_csv(“ sha1_vsdt.csv”,index = False)