在python中高效地从列中提取数字

2024-10-05 14:28:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我在pandas dataframe中有一列,如下所示:

     Manufacture_Id  Score  Rank
0             S1     93     1
1             S1     91     2
2             S1     86     3
3             S2     88     1
4            S25     73     2
5           S100     72     3
6           S100     34     1
7           S100     24     2

我想将“制造Id”列中的结束编号提取到一个新列中,如下所示:

   Manufacture_Id  Score  Rank   Id
0             S1     93     1    1
1             S1     91     2    1
2             S1     86     3    1
3             S2     88     1    2
4            S25     73     2   25
5           S100     72     3  100
6           S100     34     1  100
7           S100     24     2  100

我已经编写了下面的代码,它给出了结果,但是当数据变大时,它是无效的

test['id'] = test.Manufacture_Id.str.extract(r'(\d+\.\d+|\d+)')

有没有有效的方法

数据:

#Ceate dataframe
data = [
    ["S1",93,1],
    ["S1",91,2],
    ["S1",86,3],
    ["S2",88,1],
    ["S25",73,2],
    ["S100",72,3],
    ["S100",34,1],
    ["S100",24,2],
       
]

#dataframe
test = pd.DataFrame(data, columns = ['Manufacture_Id', 'Score', 'Rank'])

Tags: 数据代码testiddataframepandasdata编号
1条回答
网友
1楼 · 发布于 2024-10-05 14:28:56

下面的代码将比正则表达式更有效

test["id"] = test['Manufacture_Id'].str[1:].astype(int)

但是如果S不是常量,那么您可以尝试以下代码段

test["id"] = test.Manufacture_Id.str.extract('(\d+)').astype(int)

相关问题 更多 >