熊猫应用 slice_replace 与 for 循环和条件语句

时间:2021-02-28 01:26:17

标签: python pandas dataframe

我想遍历数据框中的一列,如果该列中的值满足特定条件,则利用 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'

1 个答案:

答案 0 :(得分:0)

使用:

df["INPUT"] = df["INPUT"].str.replace('^AB0', 'AB-', regex=True)

^ 之前的 AB0 是一个正则表达式符号,表示从文本开始匹配。这与您对 startswith('AB0') 的测试相同。没有它,您还会错误地将 AB-AB0 替换为 AB-AB-

regex=True 是告诉 pandas 第一个参数是正则表达式,这样 ^ 就可以得到它的特殊含义。

相关问题