Absolute value for column in Python

Question:

How could I convert the values of column ‘count’ to absolute value?

A summary of my dataframe this:

               datetime       count
0   2011-01-20 00:00:00   14.565996
1   2011-01-20 01:00:00   10.204177
2   2011-01-20 02:00:00   -1.261569
3   2011-01-20 03:00:00    1.938322
4   2011-01-20 04:00:00    1.938322
5   2011-01-20 05:00:00   -5.963259
6   2011-01-20 06:00:00   73.711525
Asked By: Yari

||

Answers:

Use pandas.DataFrame.abs().

import pandas as pd

df = pd.DataFrame(data={'count':[1, -1, 2, -2, 3, -3]})

df['count'] = df['count'].abs()

print(df)
   count
#0      1
#1      1
#2      2
#3      2
#4      3
#5      3
Answered By: Ffisegydd

You can call abs() on multiple columns too.

df[['col1', 'col2']] = df[['col1', 'col2']].abs()

or use numpy abs() as well, which interestingly returns a pandas object, not a numpy array:

df['col1'] = np.abs(df['col1'])

On a tangential note, if you get SettingWithCopyWarning when you convert column values into absolute values, that means your dataframe is probably created by filtering another dataframe. Turn on copy-on-write mode to turn it off. See this post for more info.

pd.options.mode.copy_on_write = True

df['count'] = df['count'].abs()

or use assign() to make a copy.

df = df.assign(count=df['count'].abs())
Answered By: cottontail