从每一行中删除字符串标签

时间:2015-05-27 19:05:57

标签: python regex csv pandas data-cleansing

我正在使用pandas读取csv列,其中每一行都具有以下格式:

IP: XXX:XX:XX:XXX

为了摆脱IP:前缀,我正在编辑事实后的列:

logs['ip'] = logs['ip'].str[4:]

有没有办法在read_csv内执行此操作,可能使用正则表达式,以避免后期计算?

更新 | 考虑这种情况,其中有多个列具有这些前缀 - 是否有更好的方法?

logs['mac'] = logs['mac'].str[5:] logs['id'] = logs['id'].str[4:] logs['lan'] = logs['lan'].str[5:] logs['ip'] = logs['ip'].str[4:]

2 个答案:

答案 0 :(得分:1)

您可以将csv列转换为字符串,在字符串上使用.split(“IP:”)[1],该字符串将包含除“IP:”之外的所有内容。我不确定这是否是最好的方法,但这是我想到的。

str.split("IP":\s")

答案 1 :(得分:1)

converters的{​​{1}}选项可能会提供有用的方法。让我们说文件看起来像这样:

read_csv

然后您可以指定id address 1 IP:123.1.1.1 2 IP:456.1.1.1 3 IP:789.1.1.1 应该转换为'IP:'(空白),如下所示:

''

我忽略了一个轻微的复杂问题,如果在dct = { 'address': lambda x: x.replace('IP:','') } df = pd.read_csv( 'foo.txt', delimiter=' *', converters=dct ) id address 0 1 123.1.1.1 1 2 456.1.1.1 2 3 789.1.1.1 之后有空格,那么您可能正在阅读IP:作为其自己的专栏,但您应该能够这很容易适应这一点。