我想遍历数据框中的一列,如果该列中的值满足特定条件,则利用 slice_replace 函数仅更新字符串的一部分
例如,如果我有以下内容:
data = {'INPUT':['AB-TEF', 'AB0HFD', 'AB0GRD','AB0JEC','AB-JOD']}
df = pd.DataFrame(data)
INPUT
0 AB-TEF
1 AB0HFD
2 AB0GRD
3 AB0JEC
4 AB-JOD
我想把所有的零都改成破折号,我最终会得到:
INPUT
0 AB-TEF
1 AB-HFD
2 AB-GRD
3 AB-JEC
4 AB-JOD
我尝试过:
for i in df['INPUT']:
if i.startswith('AB0'):
i = i.str.slice_replace(start=2,stop=3,repl='-')
但我明白了:
AttributeError: 'str' object has no attribute 'str'
答案 0 :(得分:0)
使用:
df["INPUT"] = df["INPUT"].str.replace('^AB0', 'AB-', regex=True)
^
之前的 AB0
是一个正则表达式符号,表示从文本开始匹配。这与您对 startswith('AB0')
的测试相同。没有它,您还会错误地将 AB-AB0
替换为 AB-AB-
。
regex=True
是告诉 pandas 第一个参数是正则表达式,这样 ^
就可以得到它的特殊含义。