如何检查包含不同名称的数据集中是否存在“蠕虫”一词:

时间:2019-08-17 10:03:27

标签: python dataframe

我有一个包含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

2 个答案:

答案 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)