Подсчет количества чисел между каждой точкой в ​​каждом элементе массива в Pandas - PullRequest
0 голосов
/ 13 мая 2019

У меня есть столбец в spreedsheet с IP-номерами вроде:

IP
107.57.251.192
219.209.105.108
96.138.34.175
172.135.215.244
89.83.162.207
53.197.57.183
172.53.157.32

, и у меня они внутри массива, такие как

array=['107.57.251.192', '219.209.105.108', '96.138.34.175', '172.135.215.244', '89.83.162.207', '53.197.57.183', '172.53.157.32']

, теперь мне нужно создать новый массив, давайте вызовемit

array2=['3sign.2sign.3sign.3sign', '3sign.3sign.3sign.3sign'...]

Итак, я хочу посчитать количество чисел между точками в каждом номере ID в моем массиве.

Я нашел несколько источников с функцией .count (), но не смогпонять, как я могу использовать его в моем примере с итерацией.

count1=0
count2=0
count3=0
count4=0

for i in range(len(array)):
    array2[i] = array[i]
    for element in len(array2[i]):
        array2[i] = pd.Series.str.

Я думал, с помощью приведенного выше кода я сначала назначу элементы новому массиву, а затем для каждого элемента с новой итерацией я сделаю функцию дляСчитайте 4 счетчика (потому что внутри IP-адреса между каждой точкой есть 4 секции).Вероятно, это плохая идея, и она недостаточно эффективна, но я начинаю с Python.

Ответы [ 2 ]

0 голосов
/ 13 мая 2019

Вы можете использовать регулярное выражение с re.sub

import re

[
    re.sub(r'(\d+)', lambda x: f'{len(x.group(1))}sign', el) for el in array
]

['3sign.2sign.3sign.3sign',
 '3sign.3sign.3sign.3sign',
 '2sign.3sign.2sign.3sign',
 '3sign.3sign.3sign.3sign',
 '2sign.2sign.3sign.3sign',
 '2sign.3sign.2sign.3sign',
 '3sign.2sign.3sign.2sign']
0 голосов
/ 13 мая 2019

Используйте list comprehension с join как:

arr = ['.'.join([str(len(x))+'sign' for x in i.split('.')])  for i in array]

print(arr)
['3sign.2sign.3sign.3sign',
 '3sign.3sign.3sign.3sign',
 '2sign.3sign.2sign.3sign',
 '3sign.3sign.3sign.3sign',
 '2sign.2sign.3sign.3sign',
 '2sign.3sign.2sign.3sign',
 '3sign.2sign.3sign.2sign']

Или:

arr = ['.'.join(['1'*len(x) for x in i.split('.')])  for i in array]

print(arr)
['111.11.111.111',
 '111.111.111.111',
 '11.111.11.111',
 '111.111.111.111',
 '11.11.111.111',
 '11.111.11.111',
 '111.11.111.11']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...