如何选择dataframe的最后一列包含特定值的行

时间:2017-10-10 18:57:22

标签: python-3.x pandas pandas-groupby sklearn-pandas

Duration Protocol Direction Label
12        tcp     bi        normal-V45
2         udp     one       Botnet-45
2         icmp    bi        Botnet-68
3         tcp     one       normal-V73
5         udp     bi        Background-tcp
3         icmp    one       Background

我想选择最后一列(标签)为normal或Botnet的行。 如果Label包含normal / Botnet,我必须检查条件(这里正常-V45和normal-V73被认为是正常的,类似于僵尸网络的概念)。所以输出应该是:

Duration Protocol Direction Label
12        tcp     bi        normal-V45
2         udp     one       Botnet-45
2         icmp    bi        Botnet-68
3         tcp     one       normal-V73

我在pandas中使用以下内容,但所有数据都来自csv。帮助赞赏。等待。非常感谢提前:data1是所有数据的数据框,[~data1.iloc [:, - 1] .str用于选择最后一列。

datagrouped = data1.loc[~data1.iloc[:,-1].str == 'Botnet']

1 个答案:

答案 0 :(得分:1)

.str.contans与正则表达式和布尔索引一起使用:

df[df.Label.str.contains(r'normal|Botnet')]

输出:

   Duration Protocol Direction       Label
0        12      tcp        bi  normal-V45
1         2      udp       one   Botnet-45
2         2     icmp        bi   Botnet-68
3         3      tcp       one  normal-V73