【问题标题】:How to append a variable result into specific column in csv?如何将变量结果附加到csv中的特定列?
【发布时间】:2018-10-05 02:22:46
【问题描述】:

鉴于:

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

【问题讨论】:

  • df1['DESC'] = df['DESC'].values 应该可以满足您的需求。
  • 你能给出完整的答案,我可以投票

标签: python csv logging


【解决方案1】:

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

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

df1.to_csv("sha1_vsdt.csv",index=False)

【讨论】:

  • 但是当我再次运行它时,它显示:文件“pandas_libs\hashtable_class_helper.pxi”,第 1500 行,在 pandas._libs.hashtable.PyObjectHashTable.get_item KeyError: 'DESC'
  • 它对我来说很好用。您是否确认您的数据框 df 和 df1 都具有密钥“DESC”?
猜你喜欢
  • 2012-03-10
  • 2017-12-04
  • 2020-10-01
  • 2018-06-18
  • 2013-11-14
  • 2017-03-28
  • 1970-01-01
  • 1970-01-01
  • 2023-03-31
相关资源
最近更新 更多