看过来
《pandas 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
本文介绍文本类型的一些常见的其他属性和操作方法和属性,这些方法和属性在我们处理文本数据时非常有用。
s = pd.Series(['lower', 'CAPITALS', 'this is a sentence', 'SwApCaSe'])
s.str.lower() # 转为小写
s.str.upper() # 转为大写
s.str.title() # 标题格式,每个单词大写
s.str.capitalize() # 首字母大写
s.str.swapcase() # 大小写互换
s.str.casefold() # 转为小写,支持其他语言如德语
# 居中对齐,宽度为10,用 - 填充
s.str.center(10, fillchar='-')
# 左对齐
s.str.ljust(10, fillchar='-')
# 右对齐
s.str.rjust(10, fillchar='-')
# 指定宽度,填充内容对齐方式,填充内容
# side{‘left’, ‘right’, ‘both’}, default ‘left’
s.str.pad(width=10, side='left', fillchar='-')
# 填充对齐
s.str.zfill(3) # 生成字符,不足3位的前边加0
# 指定字母的数量
s.str.count('a')
# 支持正则,包含 abc 三个字母的总数
s.str.count(r'a|b|c')
# 字符长度
s.str.len()
# 编码
s.str.encode('utf-8')
# 解码
s.str.decode('utf-8')
# 字符串的Unicode普通格式
# form{‘NFC’, ‘NFKC’, ‘NFD’, ‘NFKD’}
s.str.normalize('NFC')
以下方法可以判断文本的相关格式:
# 检查字母和数字字符
s.str.isalpha() # 是否纯英文数字单词组成
s.str.isalnum() # 是否单词、数字或者它们组合形式组成
# 请注意,对于字母数字检查,针对混合了任何额外标点
# 或空格的字符的检查将计算为 False
s.str.isdecimal() # 是否数字 0-9 组成合规10进制数字
s.str.isdigit() # 同 但可识别 unicode中的上标和下标数字
s.str.isnumeric() # 是否可识别为一个数字,同 isdigit 可识别分数
s.str.isspace() # 是否空格
s.str.islower() # 是否小写
s.str.isupper() # 是否大写
s.str.istitle() # 是否标题格式,只有第一个字母大写
示例:
(
pd.DataFrame({'ser': ['one', 'one1', '1', '',
'A B', '1.5', '3,000',
'23', '³', '⅕', '', '\t\r\n ',
'leo', 'Pay for', 'HI'
]})
.assign(_alpha=df.ser.str.isalpha())
.assign(_numeric=df.ser.str.isnumeric())
.assign(_digit=df.ser.str.isdigit())
.assign(_decimal=df.ser.str.isdecimal())
.assign(_space=df.ser.str.isspace())
.assign(_lower=df.ser.str.islower())
.assign(_upper=df.ser.str.isupper())
.assign(_title=df.ser.str.istitle())
.set_index('ser')
.astype(int)
)
'''
_alpha _numeric _digit _decimal _space _lower _upper _title
ser
one 1 0 0 0 0 1 0 0
one1 0 0 0 0 0 1 0 0
1 0 1 1 1 0 0 0 0
0 0 0 0 0 0 0 0
A B 0 0 0 0 0 0 1 1
1.5 0 0 0 0 0 0 0 0
3,000 0 0 0 0 0 0 0 0
23 0 1 1 1 0 0 0 0
³ 0 1 1 0 0 0 0 0
⅕ 0 1 0 0 0 0 0 0
0 0 0 0 0 0 0 0
\t\r\n 0 0 0 0 1 0 0 0
leo 1 0 0 0 0 1 0 0
Pay for 0 0 0 0 0 0 0 1
HI 1 0 0 0 0 0 1 0
'''
# 类似 python str.translate() 翻译映射
s.str.translate(trantab)
# 将长文本拆分开指定宽度的字符,用换行连接
s.str.wrap(10)
更新时间:2022-05-17 14:09:08 标签:pandas 文本 方法