我有一个包含1854行和106列的数据集,在它的第三列中有诸如“ Worm.Win32.Zwr.c”(以及其他类型的恶意软件名称)的值,我想检查是否存在在任何行中输入'worm'
之类的单词,然后在同一行的目标列中插入1
for rows in malware_data:
if ('worm' in malware_data[3]):
malware_data.loc[rows]['target']=1
else:
malware_data.loc[rows]['target']=0
答案 0 :(得分:1)
您可以通过多种方式执行此操作:
1)通过创建布尔掩码来过滤哪些行包含“蠕虫”一词:
mask = df.str.lower().str.contains('worm')
df.loc[mask, third_column].target = 1
df.loc[~mask, third_column].target = 0
df.str.lower().str.contains('worm')
的插图,您可以使用df.str.contains('(?i)worm')
如果您不知道第三列的名称,可以使用:
third_column = df.columns[2]
2)通过按照@ArunPrabhath建议在DataFrame的第三列应用函数:
df.target = df[third_column].apply(lamda x: int('worm' in x.lower()))
答案 1 :(得分:0)
malware_data ['target'] = malware_data [3] .apply(lamda行:如果为1,则表示“蠕虫”,否则为0)