【问题标题】:Counting the number of numbers between each dots in every element of the array in Pandas计算 Pandas 数组每个元素中每个点之间的数字数量
【发布时间】:2019-09-30 00:51:16
【问题描述】:

我在电子表格中有 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']

现在我需要创建一个新数组,我们称之为

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 开始。

【问题讨论】:

  • 您想如何存储计数?在字典里?逗号分隔列表??
  • 好问题,现在我明白这很愚蠢,因为 count1,count2... 会随着数组的每个元素而改变。只是想法如何使对象分配数字数量。结果应该像 111.11.1.111 ---.. 3signs.2signs.1sign.3sign。我真的不需要存储每个元素的计数。

标签: string pandas dataframe for-loop count


【解决方案1】:

使用list comprehensionjoin 作为:

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']

【讨论】:

  • 为我工作!非常感谢!
【解决方案2】:

您可以在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']

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多