仅从字符串的最后一部分显示的字符串中获取数字

Get only the number from the string that appears in the last part of the string

提问人:Pete 提问时间:11/13/2023 最后编辑:tripleeePete 更新时间:11/13/2023 访问量:91

问:

import pandas as pd

mydata = {"Key" : [567, 568, 569, 570, 571, 572] , "Sprint" : ["Max1", "Max2", "DI001 2", "DI001 25", "DAS 100" , "DI001 101"]}

df = pd.DataFrame(mydata)
print (df)

从这个数据框中,我只想拆分出现在字符串最后一部分的数字。拆分字符串不起作用,因为末尾的位数不是预定义的。它最多可以是 3 位数字。df

预期输出:在“冲刺编号”列中,数据应如下所示。

Expected Output for column "Sprint Number"

python pandas 字符串

评论

1赞 tripleee 11/13/2023
请不要发布代码、错误消息或其他文本数据的图像。

答:

0赞 Abdul Niyas P M 11/13/2023 #1

这是 .str.extract

>>> import pandas as pd
>>> 
>>> mydata = {
...     "Key": [567, 568, 569, 570, 571, 572],
...     "Sprint": ["Max1", "Max2", "DI001 2", "DI001 25", "DAS 100", "DI001 101"],
... }
>>> df = pd.DataFrame(mydata)
>>> print(df)
   Key     Sprint
0  567       Max1
1  568       Max2
2  569    DI001 2
3  570   DI001 25
4  571    DAS 100
5  572  DI001 101
>>> df["Sprint Number"] = df.Sprint.str.extract(r"(\d+)$").astype(int)
>>> print(df)
   Key     Sprint Sprint Number
0  567       Max1             1
1  568       Max2             2
2  569    DI001 2             2
3  570   DI001 25            25
4  571    DAS 100           100
5  572  DI001 101           101

评论

1赞 tripleee 11/13/2023
(?:\b)?在这里很没用。也许用它替换它(尽管它不适用于完全由数字组成的字符串;但是,如果这是你的意思,那就说吧)。(?<=\D)(\d+)$
0赞 Abdul Niyas P M 11/13/2023
感谢您的反馈。我已经编辑了我的答案。
1赞 Corralien 11/13/2023
也许你应该附加,因为你正在提取数字?.astype(int)
0赞 Pete 11/13/2023
@AbdulNiyasPM数据集 Sprint 列是否具有多个值,并带有 “;” 分隔符。现在作为第一步,将字符串拆分为一个列表,然后我想提取数字并放入“Sprintnum”列中的另一个列表中 键 |冲刺 |冲刺列表 |Sprintnumb ----------------------------------------------------------------- 567 |最大1;最大2 |[最大 1、最大 2] |[1, 2] |