替换熊猫系列中元素的特定字符

时间:2021-03-24 05:50:41

标签: python regex pandas string

我有这个熊猫系列送给前任;

data = pd.Series(['A', 'B', 'C', 'AabX', 'BacX','', np.nan, 'CABA', 'dog', 'cat'])

现在,我想用 PP 替换元素的每个“X”和“狗”。

所以我的最终结果是:

['A', 'B', 'C', 'AabPP', 'BacPP','', np.nan, 'CABA', 'PP', 'cat']

我是这样做的:

data.str.replace('X','PP')

我明白了:

['A', 'B', 'C', 'AabPP', 'BacPP','', np.nan, 'CABA', 'dog', 'cat']

但是我可以同时替换 'dog' 吗?还是我需要再次执行相同的过程?

1 个答案:

答案 0 :(得分:2)

如果需要替换子字符串 const userDisplay = <K extends string>( object: Record<K, { id: string }> ): IUserFormat<UserType> => { const type = Object.values(UserType).find(type => type.toLowerCase() in object); if (!type) { throw new Error("no user type found"); } return toFormat(type); } const format = userDisplay(randomUser); // type: IUserFormat<UserType> 和没有子字符串的 X 使用 dog 用于正则表达式 | 并添加 or 作为字符串的开头和 {{ 1}} 表示字符串结尾:

^

如果需要用子字符串 $df = data.str.replace('X|^dog$','PP', regex=True) #alternative df = data.replace('X|^dog$','PP', regex=True) 替换,请使用:

X

在此示例中可以更好地看出差异:

dog

编辑:感谢@SeaBean 的另一种情况 - 如果没有 dog 的子字符串并且每个字符串中可以有多个单词,请添加单词边界 df = data.str.replace('X|dog','PP', regex=True) #alternative df = data.replace('X|dog','PP', regex=True)

data = pd.Series(['A', 'BacX', 'dog', 'catdog', 'X'])

df = data.str.replace('X|^dog$','PP', regex=True)
print (df)
0         A
1     BacPP
2        PP
3    catdog <- dog is substring, so not replaced
4        PP
dtype: object

df = data.str.replace('X|dog','PP', regex=True)
print (df)
0        A
1    BacPP
2       PP
3    catPP <- dog is substring, so replaced
4       PP
dtype: object