Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Pandas replace values

I have the following dataframe:

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

I want to replace all rows in the dataframe which do not contain 'pre' to become 'nonpre', so dataframe looks like:

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

I can do this using a dictionary and pandas replace, however I want to just select the elements which are not 'pre' and replace them with 'nonpre'. is there a better way to do that without listing all possible col values in a dictionary?

like image 412
user308827 Avatar asked Nov 25 '14 02:11

user308827


People also ask

How do pandas replace values?

Pandas DataFrame replace() MethodThe replace() method replaces the specified value with another specified value. The replace() method searches the entire DataFrame and replaces every case of the specified value.


2 Answers

As long as you're comfortable with the df.loc[condition, column] syntax that pandas allows, this is very easy, just do df['col'] != 'pre' to find all rows that should be changed:

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
like image 193
Marius Avatar answered Oct 17 '22 19:10

Marius


df[df['col'].apply(lambda x: 'pre' not in x)] = 'nonpre'
like image 45
Mike Avatar answered Oct 17 '22 18:10

Mike