我有这个熊猫系列送给前任;
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' 吗?还是我需要再次执行相同的过程?
答案 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