字符串操作
import pandas as pd
import numpy as np
s = pd.Series(['A', 'c', 'AGeR', 'SEW', np.nan])
s
0 A
1 c
2 AGeR
3 SEW
4 NaN
dtype: object
字符串型 Series 的大小写转换
s.str.upper()
0 A
1 C
2 AGER
3 SEW
4 NaN
dtype: object
s.str.lower()
0 a
1 c
2 ager
3 sew
4 NaN
dtype: object
计算每个字符串的长度
s.str.len()
0 1.0
1 1.0
2 4.0
3 3.0
4 NaN
dtype: float64
字符串的替换操作
df = pd.DataFrame(np.random.randn(3, 2), columns=['A a', 'B b'], index=range(3))
df
A a | B b | |
---|---|---|
0 | 0.021985 | -0.110258 |
1 | 0.212810 | -0.915461 |
2 | 0.739122 | -0.471499 |
将属性名中的空格去除
df.columns = df.columns.str.replace(' ', '')
df
Aa | Bb | |
---|---|---|
0 | 0.021985 | -0.110258 |
1 | 0.212810 | -0.915461 |
2 | 0.739122 | -0.471499 |
字符串切分
se = pd.Series(['a_b_c', 'x_y_z', 'p_q_t'])
se
0 a_b_c
1 x_y_z
2 p_q_t
dtype: object
se.str.split('_') # 按指定字符切分 全切 不计次数
0 [a, b, c]
1 [x, y, z]
2 [p, q, t]
dtype: object
se.str.split('_', 1) # 只能切分一次
0 [a, b_c]
1 [x, y_z]
2 [p, q_t]
dtype: object
虽然切分了 但是其数据类型还是 Series 通过 expand 属性可以是数据增维
se.str.split('_', expand=True)
0 | 1 | 2 | |
---|---|---|---|
0 | a | b | c |
1 | x | y | z |
2 | p | q | t |
包含关系
ser = pd.Series(['A', 'c', 'AGeR', 'SEW', np.nan])
ser.str.contains('A')
0 True
1 False
2 True
3 False
4 NaN
dtype: object
r = pd.Series([2,5,4,9,1,7])
r
0 2
1 5
2 4
3 9
4 1
5 7
dtype: int64
isin() 方法可以传入一个列表 看数据有没有出现在传入的列表中
r.isin([2,8,6])
0 True
1 False
2 False
3 False
4 False
5 False
dtype: bool
r[r.isin([2,8,6])]
0 2
dtype: int64