熊猫数据框替换特定位置的字符,而无需更改其他位置的相似字符

时间:2018-10-09 05:50:48

标签: python pandas

数据框中有一个列(‘A’),其长度为3到8。 对于长度为6的字符,如果O在字符串的第2、4或6个字符中,则需要用0(零)替换O。 例如:

OOMOOO to O0M0O0
O4MOP8 to O4M0P8
H4M2SO to H4M2S0

以下代码仅适用于第六个字符:(长度为6时的最后一个字符)

df['A'] = df[(df['A'].str.len() == 6)]['A'].str.replace('O$', '0')

有什么想法可以实现第二和第四职位的目标吗?

1 个答案:

答案 0 :(得分:3)

您可以使用Apply尝试类似的操作

def replace_chars(x):
    return "".join(["0" if chr == "O" and ind%2 ==0 else chr for ind, chr in enumerate(x)])

m = df['A'].str.len() == 6 
df.loc[m, 'A'] = df.loc[m, 'A'].apply(replace_chars)

编辑:感谢jezrael

,更改分配语法以避免链接