在使用 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

去除右边空白符