【问题标题】:How to find nth occurrence in elements of an array, then replace digits after the nth occurrence with a zero in python如何在数组的元素中找到第n次出现,然后在python中用零替换第n次出现后的数字
【发布时间】:2021-06-26 19:42:32
【问题描述】:

在 Python 中,我正在导入一个 .csv 文件,获取 .csv 中的“IpAddress”列,然后将该列放入一个数组中。 我现在想通过用零替换最后一个八位字节中的数字来编辑数组中的每个元素以创建一个新数组。

这是我当前的输出:

['10.232.4.174' '10.18.8.174' '10.18.8.195' '10.18.4.86' '10.18.4.90' '10.18.4.51' '10.18.4.87']

我的目标是输出:

['10.232.4.0' '10.18.8.0' '10.18.8.0' '10.18.4.0' '10.18.4.0' '10.18.4.0' '10.18.4.0'] 

使用条件的单个字符串存在变化:

'.'.join(ip.split('.')[:-1]+["0"])ip= ip[:ip.rfind('.')+1] + '0' 但是 split 和 rfind() 对这个数组不起作用。

如何获取单个字符串的条件,将其应用于整个数组并输出一个新数组?

我在这里导入文件,然后将其放入数组中:

import pandas as pd

data = pd.read_csv (r'C:\script\Result.csv')
data.head() 
newAddress =data['IpAddress'].values

谢谢。

【问题讨论】:

  • 我的回答解决了你的问题吗?

标签: python arrays numpy csv import


【解决方案1】:

您可以使用正则表达式。例如:

import pandas as pd
import re
input_ = ['10.232.4.174', '10.18.8.174','10.18.8.195','10.18.4.86','10.18.4.90','10.18.4.51','10.18.4.87']

data = pd.DataFrame({'IpAddress':input_})
sub_regex = re.compile('(\d{1,3}\.\d{1,3}\.\d{1,3}\.)(\d{1,3})')
data['IpAddress'].apply(lambda x: sub_regex.sub(r'\g<1>0', x))

输出:

0    10.232.4.0
1     10.18.8.0
2     10.18.8.0
3     10.18.4.0
4     10.18.4.0
5     10.18.4.0
6     10.18.4.0
Name: IpAddress, dtype: object

在这里,正则表达式将您的 IP 地址分为两组,一组包含前 3 个数字,另一组包含最后一个。然后,它使用替换命令并放置第一组\g&lt;1&gt;,然后放置一个零。您可以使用 apply 函数将其应用于系列的每一行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-27
    • 1970-01-01
    • 2021-08-31
    • 2018-03-24
    • 2020-08-16
    相关资源
    最近更新 更多