Pandas dataframe заменяет символ в определенных позициях, не меняя аналогичные символы в других позициях - PullRequest
0 голосов
/ 09 октября 2018

В кадре данных есть столбец (‘A’) длиной от 3 до 8. Для столбцов с длиной 6 мне нужно заменить O на 0 (ноль), если O - во 2, 4 или 6-м символестроки.Например:

OOMOOO to O0M0O0
O4MOP8 to O4M0P8
H4M2SO to H4M2S0

Следующий код работает только для 6-го символа: (последний символ при длине 6)

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

Любая идея, как достичь этой цели для 2-гоа 4-е позиции?

1 Ответ

0 голосов
/ 09 октября 2018

Вы можете попробовать что-то вроде этого, используя 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...