>>> from env_helper import info; info()
页面更新时间: 2023-04-15 22:05:59
运行环境:
    Linux发行版本: Debian GNU/Linux 12 (bookworm)
    操作系统内核: Linux-6.1.0-7-amd64-x86_64-with-glibc2.36
    Python版本: 3.11.2

7.2. Pandas字符串和文本数据

在本章中,我们将使用基本系列/索引来讨论字符串操作。在随后的章节中,将学习如何将这些字符串函数应用于数据帧(DataFrame)。

Pandas提供了一组字符串函数,可以方便地对字符串数据进行操作。 最重要的是,这些函数忽略(或排除)丢失/ NaN 值。

几乎这些方法都使用Python字符串函数。 因此,将Series对象转换为String对象,然后执行该操作。

下面来看看每个操作的执行和说明。

编号

函数

描述

1

lower()

将Series/Index中的字符串转换为小写。

2

upper()

将Series/Index中的字符串转换为大写。

3

len()

计算字符串长度。

4

strip()

帮助从两侧的系列/索引中的每个字符串中删除空格(包括换行符)。

5

split(’ ’)

用给定的模式拆分每个字符串。

6

cat(sep=’ ’)

使用给定的分隔符连接系列/索引元素。

7

get_dummies()

返回具有单热编码值的数据帧(DataFrame)。

8

contains(pattern)

如果元素中包含子字符串,则返回每个元素的布尔值True,否则为False。

9

replace(a,b)

将值a替换为值b。

10

repeat(value)

重复每个元素指定的次数。

11

count(pattern)

返回模式中每个元素的出现总数。

12

startswith(pattern)

如果系列/索引中的元素以模式开始,则返回true。

13

endswith(pattern)

如果系列/索引中的元素以模式结束,则返回true。

14

find(pattern)

返回模式第一次出现的位置。

15

findall(pattern)

返回模式的所有出现的列表。

16

swapcase

变换字母大小写。

17

islower()

检查系列/索引中每个字符串中的所有字符是否小写,返回布尔值

18

isupper()

检查系列/索引中每个字符串中的所有字符是否大写,返回布尔值

19

isnumeric()

检查系列/索引中每个字符串中的所有字符是否为数字,返回布尔值。

现在创建一个系列,看看上述所有函数是如何工作的。

>>> import pandas as pd
>>> import numpy as np
>>>
>>> s = pd.Series(['Tom', 'William Rick', 'John', 'Alber@t', np.nan, '1234','SteveMinsu'])
>>> s
0             Tom
1    William Rick
2            John
3         Alber@t
4             NaN
5            1234
6      SteveMinsu
dtype: object

7.2.1. lower()函数示例

>>> s.str.lower()
0             tom
1    william rick
2            john
3         alber@t
4             NaN
5            1234
6      steveminsu
dtype: object

执行上面示例代码,得到以下结果 -

7.2.2. upper()函数示例

>>> s.str.upper()
0             TOM
1    WILLIAM RICK
2            JOHN
3         ALBER@T
4             NaN
5            1234
6      STEVEMINSU
dtype: object

执行上面示例代码,得到以下结果 -

7.2.3. len()函数示例

>>> s.str.len()
0     3.0
1    12.0
2     4.0
3     7.0
4     NaN
5     4.0
6    10.0
dtype: float64

执行上面示例代码,得到以下结果 -

7.2.4. strip()函数示例

>>> s = pd.Series(['Tom ', ' William Rick', 'John', 'Alber@t'])
>>> s
0             Tom
1     William Rick
2             John
3          Alber@t
dtype: object
>>> s.str.strip()
0             Tom
1    William Rick
2            John
3         Alber@t
dtype: object

执行上面示例代码,得到以下结果 -

7.2.5. split(pattern)函数示例

>>> s.str.split(' ')
0              [Tom, ]
1    [, William, Rick]
2               [John]
3            [Alber@t]
dtype: object

7.2.6. cat(sep=pattern)函数示例

>>> s.str.cat(sep=' <=> ')
'Tom  <=>  William Rick <=> John <=> Alber@t'

7.2.7. get_dummies()函数示例

>>> s.str.get_dummies()
William Rick Alber@t John Tom
0 0 0 0 1
1 1 0 0 0
2 0 0 1 0
3 0 1 0 0

7.2.8. contains()函数示例

>>> s.str.contains(' ')
0     True
1     True
2    False
3    False
dtype: bool

7.2.9. replace(a,b)函数示例

>>> s.str.replace('@','$')
0             Tom
1     William Rick
2             John
3          Alber$t
dtype: object

7.2.10. repeat(value)函数示例

>>> s.str.repeat(2)
0                      Tom Tom
1     William Rick William Rick
2                      JohnJohn
3                Alber@tAlber@t
dtype: object

7.2.11. count(pattern)函数示例

>>> s.str.count('m')
0    1
1    1
2    0
3    0
dtype: int64

7.2.12. startswith(pattern)函数示例

>>> s.str. startswith ('T')
0     True
1    False
2    False
3    False
dtype: bool

7.2.13. endswith(pattern)函数示例

>>> s.str.endswith('t')
0    False
1    False
2    False
3     True
dtype: bool

执行上面示例代码,得到以下结果 -

7.2.14. find(pattern)函数示例

>>> s.str.find('e')
0   -1
1   -1
2   -1
3    3
dtype: int64
注意:-1表示元素中没有这样的模式可用。

7.2.15. findall(pattern)函数示例

>>> s.str.findall('e')
0     []
1     []
2     []
3    [e]
dtype: object
空列表([])表示元素中没有这样的模式可用。

7.2.16. swapcase()函数示例

>>> s.str.swapcase()
0             tOM
1     wILLIAM rICK
2             jOHN
3          aLBER@T
dtype: object

7.2.17. islower()函数示例

>>> s.str.islower()
0    False
1    False
2    False
3    False
dtype: bool

7.2.18. isupper()函数示例

>>> s.str.isupper()
0    False
1    False
2    False
3    False
dtype: bool

7.2.19. isnumeric()函数示例

>>> s.str.isnumeric()
0    False
1    False
2    False
3    False
dtype: bool