【Pandas驯化-09】一文搞懂Pandas中字符串用法extract、zfill、isdigit
本次修炼方法请往下查看
🌈 欢迎莅临我的个人主页 👈这里是我工作、学习、实践 IT领域、真诚分享 踩坑集合,智慧小天地!
🎇 免费获取相关内容文档关注:微信公众号,发送 pandas 即可获取
🎇 相关内容视频讲解 B站
🎓 博主简介:AI算法驯化师,混迹多个大厂搜索、推荐、广告、数据分析、数据挖掘岗位 个人申请专利40+,熟练掌握机器、深度学习等各类应用算法原理和项目实战经验。
🔧 技术专长: 在机器学习、搜索、广告、推荐、CV、NLP、多模态、数据分析等算法相关领域有丰富的项目实战经验。已累计为求职、科研、学习等需求提供近千次有偿|无偿定制化服务,助力多位小伙伴在学习、求职、工作上少走弯路、提高效率,近一年好评率100% 。
📝 博客风采: 积极分享关于机器学习、深度学习、数据分析、NLP、PyTorch、Python、Linux、工作、项目总结相关的实用内容。
🌵文章目录🌵
- 🎯 1. 基本介绍
- 💡 2. 使用方法
- 2.1 大小写转换lower
- 2.2 字符串匹配contains函数
- 2.3 检查字符串内容isdigit、isalpha、isalnum
- 2.3 正则提取和补零操作
- 🔍 4. 注意事项
- 🔧 5. 总结
下滑查看解决方法
🎯 1. 基本介绍
Pandas 提供了一个非常强大的字符串处理功能,通过 str 访问器,可以对 Series 或 DataFrame 中的字符串类型列进行各种操作,如大小写转换、字符串分割、正则表达式匹配、检查字符串内容、计数、搜索、长度获取、正则提取以及补零操作。这些操作使得文本数据的处理变得简单而高效。
💡 2. 使用方法
对于本文中的函数的使用前提就是这列的数据格式为str类型,如果不是该类型,需要将其转化为str类型即可,具体的做法为:
df['cols'] = df['cols'].astype('str')
2.1 大小写转换lower
使用 str.lower() 和 str.upper() 进行大小写转换。。以下是一个基本的使用示例:
import pandas as pd
# 创建包含字符串的 DataFrame
df = pd.DataFrame({
'Name': ['alice', 'bob', 'charlie'],
'Email': ['alice@example.com', 'bob@example.com', 'charlie@example.com'],
'Text': ['hello world', 'HELLO WORLD', 'Hello PyData']
})
Name Email Text
0 alice alice@example.com hello world
1 bob bob@example.com HELLO WORLD
2 charlie charlie@example.com Hello PyData
# 将 Name 列转换为小写
df['Name'] = df['Name'].str.lower()
# 将 Text 列转换为大写
df['Text'] = df['Text'].str.upper()
print(df)
Name Email Text
0 alice alice@example.com HELLO WORLD
1 bob bob@example.com HELLO WORLD
2 charlie charlie@example.com HELLO PYDATA
2.2 字符串匹配contains函数
使用 str.contains() 函数可以对数据进行正则表达式匹配。具体的用法如下所示:
# 检查 Text 列中是否包含 'PYDATA'
df['ContainsPYDATA'] = df['Text'].str.contains('PYDATA', case=False)
print(df)
Name Email Text Username ContainsPYDATA
0 alice alice@example.com HELLO WORLD alice False
1 bob bob@example.com HELLO WORLD bob False
2 charlie charlie@example.com HELLO PYDATA charlie True
2.3 检查字符串内容isdigit、isalpha、isalnum
- isdigit(): 检查字符串是否只包含数字。
- isalpha(): 检查字符串是否只包含字母。
- isalnum(): 检查字符串是否只包含字母和数字。
- 具体的用法如下所示:
df = pd.DataFrame({
'Values': ['123', 'abc', 'abc123', '!@#']
})
print(df['Values'].str.isdigit()) # 检查是否全为数字
print(df['Values'].str.isalpha()) # 检查是否全为字母
print(df['Values'].str.isalnum()) # 检查是否为字母和数字
0 True
1 True
2 True
3 False
Name: Values, dtype: bool
2.3 正则提取和补零操作
- extract(): 使用正则表达式提取字符串中的匹配部分。
- zfill(): 在字符串左侧填充0以达到指定长度。
df['Digits'] = df['Values'].str.extract(r'\d+') # 提取数字
df['Padded'] = df['Values'].str.zfill(10) # 左侧补0至长度10
print(df)
Values CountA ContainsABC Length Digits Padded
0 123 0 False 3 123 000000123
1 abc 1 True 3 NaN 000000abc
2 abc123 1 False 6 123 00abc123
3 !@# 0 False 3 NaN !@#
🔍 4. 注意事项
对上述的各个函数在使用的过程中需要注意的一些事项,不然可能会出现error,具体主要为:
- 确保使用 str 方法时,列的数据类型是字符串。
- extract() 方法需要正则表达式的模式匹配,如果列中的某些值不匹配,结果将会是 NaN。
- zfill() 方法会根据指定的宽度在字符串左侧填充0,如果字符串本身的长度大于或等于指定宽度,则不会填充。
- 一些 str 方法返回的是 Pandas 的 Series 或 DataFrame,可能需要进一步处理,如使用 .str.get() 获取分割后的特定部分。
- 当使用 str.contains() 进行正则表达式匹配时,可以通过 na 参数指定如何处理缺失值。
🔧 5. 总结
Pandas 的 str 访问器为字符串类型的数据处理提供了丰富的方法,括检查字符串内容、计数、搜索、获取长度、正则提取和补零操作。通过本文的代码示例和输出结果,我们可以看到如何使用这些方法来处理文本数据。掌握这些技巧可以帮助你更高效地进行数据分析和处理。希望这篇博客能够帮助你更好地理解并应用 Pandas 的字符串操作方法。