首页 > 解决方案 > 仅从 Python 系列中提取数字

问题描述

我有一个看起来像这样的系列:

ID
WTG-1
11
11-1
12B1
13-1
5
6
G7
.
.

我只是希望能够从每个ID.

当我使用我的代码时:

df['ID'] = df['ID'].str.extract('(\d+)', expand=True)

它确实从行的前面提取所有内容,但如果存在字符串/字母/字符分隔符,则会跳过一个数字 - 即11-1它只收集11没有额外的 1。

我希望输出是:

ID         ID #
WTG-1      1
11         11
11-1       111
12B1       121
13-1       131
5          5
6          6
G7         7
.
.

有没有办法计算中间的字符?

标签: pythonregexstringpandasdataframe

解决方案


使用findall

df.ID.str.findall('(\d+)').apply(''.join)
Out[92]: 
0      1
1     11
2    111
3    121
4    131
5      5
6      6
7      7
Name: ID, dtype: object

推荐阅读