Absolute value for column in Python
Asked Answered
B

2

50

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
Brakesman answered 16/3, 2015 at 12:46 Comment(0)
S
104

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
Skied answered 16/3, 2015 at 12:50 Comment(3)
what if I want to maintain the datetime as my first column?Mylan
@Mylan just make a new column: df['abs'] = df['count'].abs()Shrubby
Get SettingWithCopyWarningHorrid
M
1

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())
Mccune answered 28/1, 2023 at 8:21 Comment(0)

© 2022 - 2025 — McMap. All rights reserved.