在使用 pandas 的 DataFrame 数据框的过程中,如果需要处理一些字符串的特性,例如判断某列是否包含一些关键字或求某列的字符长度时,通过 Series 的 str 列内置的方法进行处理会很方便。下面将介绍 Series 类的 str 自带的方法。
cat() 字符串连接
cat() 函数可实现元素级的字符串连接操作,并可指定分隔符。其语法格式如下:
Series.str.cat(others=None, sep=None, na_rep=None)
该函数参数说明如下:
others:表示 Series、Index、DataFrame、np.ndarray(一维或二维)和其他类似字符串的列表;
sep:表示连接分隔符,取值 string 或 None,默认为 None;
na_rep:当 na_rep 为 None,序列中的 NaN 值将被忽略,如果指定,将用该字符代替。
split() 切分字符串
split() 函数可根据分隔符或正则表达式对字符串进行拆分。其语法格式如下:
Series.str.split(pat=None, n=-1, expand=False)
该函数参数说明如下:
pat:表示要拆分的字符串或正则表达式,如果未指定,则拆分空格;
n:表示限制输出中的分割数,无、0 和 -1 将被解释为返回所有拆分;
expand:将拆分的字符串展开为单独的列,如果为 True,则返回 DataFrame/MultiIndex 扩展维度;如果为 False,则返回包含字符串列表的 Series/Index。
get() 获取指定位置的字符串
get() 函数可获取各元素的第 i 个字符。其语法格式如下:
Series.str.get(i)
其中,参数i表示指定位置。
示例代码example1.py如下。
# -*- coding: utf-8 -*-
import numpy as np
import pandas as pd
#1 cat()
s = pd.Series(['a', 'b', np.nan, 'd'])
print(s.str.cat(['A', 'B', 'C', 'D'], sep=','))
print(s.str.cat(['A', 'B', 'C', 'D'], sep=',', na_rep='-'))
#2 split()
s = pd.Series(["this is good text", "but this is even better"])
print(s.str.split("is", n=1, expand=True))
#3 get()
s = pd.Series(["String",
(1, 2, 3),
["a", "b", "c"],
123, -456,
{1:"Hello", "2":"World"}])
print(s.str.get(1))
除了 cat()、split() 和 get() 函数外,Series 类的 str 自带的其他函数,即矢量化的字符串函数见表 1,其函数语法格式是 Series.str .函数名(参数)。
表 1:矢量化的字符串函数
函数
说明
contains
返回表示各字符串时含有指定模式的布尔型数组
count
模式出现的次数
endswith
对各个元素执行 x.endswith(pattem)
startswith
对各个元素执行 x.startswith(pattem)
findall
计算各字符串的模式列表
join
根据指定的分隔符,将 Series 中各个元素的字符串连接起来
len
计算字符串长度
lower、upper
lower 函数是将所有字符转换为小写;upper 函数是将所有字符转换为大写
match
根据指定的正则表达式对各个元素执行 re.match
pad
在字符串的左边或右边或两边添加空白符
center
相当于在字符串的两边添加空白符
repeat
重复值,如 s.str.repeat(3) 相当于对各个字符串执行 x * 3
replace
用指走字符串替换找到的模式
slice
对 Senes 的各个字符串进行子串截取
strip
去除两边空白符
Istrip
去除左边空白符
rstrip
去除右边空白符