2024年5月9日发(作者:)

Pandas文本数据方法extractextractall

extract(方法用于从文本数据中提取出符合其中一种模式的部分。它

可以通过传递一个正则表达式来指定模式,并返回一个包含提取结果的

Series或DataFrame。如果模式中包含一个或多个捕获组(用括号括起的

部分),则提取结果将作为新的列添加到DataFrame中。

```python

import pandas as pd

data = {'phone': ['(123) 456-7890', '(999) 123-4567', '(555)

987-6543']}

df = ame(data)

#提取出区号和号码

df[['area_code', 'number']] =

df['phone'].t(r'((d{3})) (d{3}-d{4})')

print(df)

```

这将输出以下结果:

```

phone area_code number

0(123)456-7890123456-7890

1(999)123-4567999123-4567

2(555)987-6543555987-6543

```

在上面的示例中,我们使用了正则表达式`((d{3})) (d{3}-

d{4})`来提取出区号和号码。首先,`((d{3}))`匹配了括号中的三位

数字,然后`d{3}-d{4}`匹配了短横线分隔的四位数字。我们将这两个

捕获组添加到了DataFrame中的新列中。

除了extract(方法,Pandas还提供了一个类似的方法extractall(,

用于提取出所有符合其中一种模式的部分。这个方法返回一个包含所有匹

配结果的DataFrame,其中每一行对应一个匹配结果。

下面是一个示例,演示了如何使用extractall(方法从一个包含多个

日期的文本数据中提取出所有日期:

```python

import pandas as pd

# 创建一个包含多个日期的Series

data = (['Today is 2024-01-01, tomorrow is 2024-01-

02', 'Yesterday was 2024-12-31'])

series = (data)

#提取出所有日期

result = tall(r'(d{4}-d{2}-d{2})')

print(result)

```

这将输出以下结果:

```

0

match

002024-01-01

12024-01-02

102024-12-31

```

在上面的示例中,我们使用了正则表达式`d{4}-d{2}-d{2}`来匹

配日期。extractall(方法返回了一个包含所有匹配结果的DataFrame,

其中的结果按照匹配的顺序排列。每一行的第一列是匹配的索引,第二列

是匹配的结果。