gpt4 book ai didi

Python - 计算 pandas 行字符串上的连续前导数字,而不计算非连续数字

转载 作者:行者123 更新时间:2023-12-02 01:49:56 25 4
gpt4 key购买 nike

我需要创建一个新列来计算前导 0 的数量,但是尝试这样做时遇到错误。我根据 mongo 上的以下正则表达式 [\^0[0]*[1-9][0-9]*\] 从 mongo 中提取数据并将其保存到 csv 文件中。这是所有以 0 开头的“序列”。

df['Sequence'].str.count('0')

df['Sequence'].str.count('0[0]*[1-9][0-9]')

给出下面的结果。正如您所看到的,两个“count”字符串返回也会计算非前导 0。或者只是 0 的总数。

    Sequence    0s
0 012312312 1
1 024624624 1
2 036901357 2
3 002486248 2
4 045074305 3
5 080666140 3

我还尝试使用在测试时有效的循环进行编写,但在数据帧上使用它时,我遇到以下 **IndexError: string index out of range**

results = []
count = 0
index = 0
for item in df['Sequence']:
count = 0
index = 0
while (item[index] == "0"):
count = count + 1
index = index + 1
results.append(count)
df['0s'] = results
df

简而言之;如果我可以为 001230 子字符串得到 2 而不是 3。我可以将结果保存在列中以进行统计。

最佳答案

您可以将 extract^(0*) 正则表达式一起使用,以仅匹配前导零。然后使用 str.len 获取长度。

df['0s'] = df['sequence'].str.extract('^(0*)', expand = False).str.len()

输入示例:

df = pd.DataFrame({'sequence': ['12040', '01230', '00010', '00120']})

输出:

  sequence  0s
0 12040 0
1 01230 1
2 00010 3
3 00120 2

关于Python - 计算 pandas 行字符串上的连续前导数字,而不计算非连续数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70456069/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com