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,
其中的结果按照匹配的顺序排列。每一行的第一列是匹配的索引,第二列
是匹配的结果。
发布评论