如何在我的 Pandas 数据框中合并绝对值?

Posted

技术标签:

【中文标题】如何在我的 Pandas 数据框中合并绝对值?【英文标题】:How do I incorporate absolute value within my Pandas dataframe? 【发布时间】:2021-05-18 19:30:00 【问题描述】:
id Impressions_Source Impressions_Source2
15020 150201 151920

我试图弄清楚如何利用绝对值计算两个值之间的百分比差异(差异)。

这是我使用的公式

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

我可以在之后添加 .abs 吗?

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

【问题讨论】:

【参考方案1】:

之后您可以拨打.abs()

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

print(df)

打印:

      id  Impressions_Source  Impressions_Source2  Discrepancy_Num
0  15020              150201               151920         0.000114

【讨论】:

【参考方案2】:

我会去

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

因为您可以避免访问df.Impressions_Source 两次。实际上,结果与您的相同,源于重新排列的公式。

【讨论】:

旁注:你确定df["Impressions_Source"] * 100@Bo 吗?乍一看你的计算让我想到了一个相对的变化。 people usually do 是 multiplying final result 乘以 100 的东西,这样他们就可以附加一个百分比符号给它。如果这是您真正想要做的,只需将 my /100 替换为 *100。但我可能完全错了:你知道自己在做什么。【参考方案3】:

你也可以使用numpy.absolute函数

import numpy as np

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

【讨论】:

以上是关于如何在我的 Pandas 数据框中合并绝对值?的主要内容,如果未能解决你的问题,请参考以下文章

如何在支持多种数据格式的 Pandas 中合并日期?

如何从 imdb 获取更多信息并将其保存在 pandas 数据框中? [复制]

Python pandas:在我的数据框中添加一个计算变量的列

如何从 pandas 数据框中的大型每日 JSON 数据集计算平均月值?

自合并后 Pandas 数据框中的重复项

将 2 列中的值合并为 pandas 数据框中的单列