import numpy as np import pandas as pd
s = pd.Series(['bat', 'bear', 'caT', np.nan])
#
mask = s.str.endswith(('t', 'r'))
# 与下面效果一致
# mask = s.str.endswith('t') | s.str.endswith('r')
mask
Out[22]: 0 True 1 True 2 False 3 NaN dtype: object
这时候由于有空值,如果直接取mask对应数据,会报错,因为不能用非布尔值来取
s[mask]
ValueError: Cannot mask with non-boolean array containing NA / NaN values
我们可以先填补空缺值,再进行取数
mask.fillna(False, inplace=True) s[mask]
Out[27]: 0 bat 1 bear dtype: object



