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?
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.
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
df[df['col'].apply(lambda x: 'pre' not in x)] = 'nonpre'
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With