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
Answers:
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
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())
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
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
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())