我有75列和300k捕获的网络流量CSV文件。我正在使用数据应用ML。我需要根据内部和外部将IP地址转换为1和0。如果是
10.0.2.* > 0
others > 1
是否有简单的方法来做到这一点?我正在使用手动替换方法。
df['SrcAddr'] = df['SrcAddr'].replace(['10.0.2.15','10.0.2.2'],[0,0,0])
iuc,可以使用:
df['SrcAddr'] = df['SrcAddr'].str.startswith('10.0.2.').rsub(1)
或使用正则表达式:
df['SrcAddr'] = df['SrcAddr'].str.fullmatch('10.0.2.').rsub(1)
工作原理:对于每个匹配返回True
,使用rsub(1)
我们计算1-True -> 0
,对于每个不匹配的1-False -> 1
使用任意值的np.where
替代方案:
df['SrcAddr'] = np.where(df['SrcAddr'].str.startswith('10.0.2.'), 0, 1)
示例(作为新列):
SrcAddr SrcAddr2
0 10.0.2.42 0
1 8.8.8.8 1