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 в словаре?
Ответы
Ответ 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'