Reputation: 23
I'm relatively new to Python and totally new to Pandas, so my apologies if this is really simple. I have a dataframe, and I want to operate over all elements in a particular column, but only if a different column with the same index meets a certain criteria.
float_col int_col str_col
0 0.1 1 a
1 0.2 2 b
2 0.2 6 None
3 10.1 8 c
4 NaN -1 a
For example, if the value in float_col is greater than 5, I want to multiply the value in in_col (in the same row) by 2. I'm guessing I'm supposed to use one of the map
apply
or applymap
functions, but I'm not sure which, or how.
Upvotes: 2
Views: 830
Reputation: 60060
There might be more elegant ways to do this, but once you understand how to use things like loc
to get at a particular subset of your dataset, you can do it like this:
df.loc[df['float_col'] > 5, 'int_col'] = df.loc[df['float_col'] > 5, 'int_col'] * 2
You can also do it a bit more succinctly like this, since pandas
is smart enough to match up the results based on the index of your dataframe and only use the relevant data from the df['int_col'] * 2
expression:
df.loc[df['float_col'] > 5, 'int_col'] = df['int_col'] * 2
Upvotes: 3