Как добавить результат переменной в конкретный столбец в CSV? - PullRequest
0 голосов
/ 05 октября 2018

Дано:

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,

Resul будет выглядеть так:

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 голосов
/ 05 октября 2018

Вместо двух последних строк замените две следующие строки:

df1 ['DESC'] = df ['DESC']. Values ​​

df1.to_csv ("sha1_vsdt.csv»индекс = False)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...