提问人:Pete 提问时间:11/13/2023 最后编辑:tripleeePete 更新时间:11/13/2023 访问量:91
仅从字符串的最后一部分显示的字符串中获取数字
Get only the number from the string that appears in the last part of the string
问:
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
预期输出:在“冲刺编号”列中,数据应如下所示。
答:
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] |
评论