【进阶篇】高级数据清洗:Pandas中的文本处理与正则表达式
发布时间: 2024-06-24 20:14:28 阅读量: 71 订阅数: 105
![python数据分析与可视化合集](https://img-blog.csdnimg.cn/e59f717c65b848d295ae5331118def11.png)
# 2.1 字符串操作函数
### 2.1.1 字符串拼接、分割和替换
Pandas 提供了丰富的字符串操作函数,用于处理文本数据。其中,字符串拼接、分割和替换是常用的操作。
* **字符串拼接:**使用 `str.cat()` 函数连接多个字符串,可以指定连接符。
* **字符串分割:**使用 `str.split()` 函数将字符串按指定分隔符分割为列表。
* **字符串替换:**使用 `str.replace()` 函数将字符串中的特定子字符串替换为另一个子字符串。
**代码示例:**
```python
import pandas as pd
# 创建一个包含字符串的 Series
data = pd.Series(['Hello', 'World', 'Python'])
# 字符串拼接
print(data.str.cat(sep=' ')) # 输出:Hello World Python
# 字符串分割
print(data.str.split()) # 输出:[('Hello',), ('World',), ('Python',)]
# 字符串替换
print(data.str.replace('World', 'Universe')) # 输出:['Hello', 'Universe', 'Python']
```
# 2. Pandas中的文本处理
### 2.1 字符串操作函数
#### 2.1.1 字符串拼接、分割和替换
**字符串拼接**
Pandas提供了`str.cat()`方法用于字符串拼接,它可以将多个字符串连接成一个新的字符串。
```python
import pandas as pd
df = pd.DataFrame({'name': ['John', 'Mary', 'Bob'], 'age': [20, 25, 30]})
# 使用str.cat()方法拼接字符串
df['full_name'] = df['name'].str.cat(df['age'].astype(str), sep=' ')
print(df)
```
**输出:**
```
name age full_name
0 John 20 John 20
1 Mary 25 Mary 25
2 Bob 30 Bob 30
```
**字符串分割**
Pandas提供了`str.split()`方法用于字符串分割,它可以将字符串根据指定的分割符分割成一个列表。
```python
# 使用str.split()方法分割字符串
df['name_split'] = df['name'].str.split(' ')
print(df)
```
**输出:**
```
name age full_name name_split
0 John 20 John 20 [John]
1 Mary 25 Mary 25 [Mary]
2 Bob 30 Bob 30 [Bob]
```
**字符串替换**
Pandas提供了`str.replace()`方法用于字符串替换,它可以将字符串中的指定子字符串替换为另一个子字符串。
```python
# 使用str.replace()方法替换字符串
df['name_replaced'] = df['name'].str.replace('John', 'Jack')
print(df)
```
**输出:**
```
name age full_name name_split name_replaced
0 John 20 John 20 [John] Jack
1 Mary 25 Mary 25 [Mary] Mary
2 Bob 30 Bob 30 [Bob] Bob
```
#### 2.1.2 字符串大小写转换和比较
**字符串大小写转换**
Pandas提供了`str.upper()`和`str.lower()`方法用于字符串大小写转换。
```python
# 使用str.upper()方法将字符串转换为大写
df['name_upper'] = df['name'].str.upper()
# 使用str.lower()方法将字符串转换为小写
df['name_lower'] = df['name'].str.lower()
print(df)
```
**输出:**
```
name age full_name name_split name_replaced name_upper name_
```
0
0