Подтвердить что ты не робот

Pandas заменить значения

У меня есть следующий фреймворк:

     col
0    pre
1    post
2    a
3    b
4    post
5    pre
6    pre

Я хочу заменить все строки в фреймворке данных, которые не содержат "pre", чтобы стать "nonpre", поэтому dataframe выглядит так:

     col
0    pre
1    nonpre
2    nonpre
3    nonpre
4    nonpre
5    pre
6    pre

Я могу сделать это, используя словарь и pandas replace, однако я хочу просто выбрать элементы, которые не являются "pre", и заменить их на "nonpre". есть ли лучший способ сделать это без перечисления всех возможных значений col в словаре?

4b9b3361

Ответ 1

Пока вам удобнее синтаксис df.loc[condition, column], который разрешает pandas, это очень просто, просто df['col'] != 'pre', чтобы найти все строки, которые необходимо изменить:

df['col2'] = df['col']
df.loc[df['col'] != 'pre', 'col2'] = 'nonpre'

df
Out[7]: 
    col    col2
0   pre     pre
1  post  nonpre
2     a  nonpre
3     b  nonpre
4  post  nonpre
5   pre     pre
6   pre     pre

Ответ 2

df[df['col'].apply(lambda x: 'pre' not in x)] = 'nonpre'