How do I incorporate absolute value within my Pandas dataframe?

Viewed 380
id Impressions_Source Impressions_Source2
15020 150201 151920

I am trying to figure out how to calculate a percentage difference (discrepancy) between two values utilizing absolute value.

Here is my formula used

df['Discrepancy_Num'] = (df['Impressions_Source'] - df['Impressions_Source2']) / (df['Impressions_Source'] * 100)

Would I just add .abs after?

df['Discrepancy_Num'] = (df['Impressions_Source'] - df['Impressions_Source2']) / (df['Impressions_Source'] * 100).abs

3 Answers

You can call .abs() afterwards:

df["Discrepancy_Num"] = (
    (df["Impressions_Source"] - df["Impressions_Source2"])
    / (df["Impressions_Source"] * 100)
).abs()

print(df)

Prints:

      id  Impressions_Source  Impressions_Source2  Discrepancy_Num
0  15020              150201               151920         0.000114

I would go for

df["Discrepancy_Num"] = (
    -1 + df.Impressions_Source2/df.Impressions_Source
).abs()/100

since you can avoid accessing df.Impressions_Source twice. Indeed, the result is the same as yours, stemming from a rearranged formulation.

You can use numpy.absolute function as well

import numpy as np

df['Discrepancy_Num'] = np.absolute(df['Impressions_Source'] - df['Impressions_Source2']) / (df['Impressions_Source'] * 100)
Related