【问题标题】:Actual and Percentage Difference on consecutive columns in a Pandas or Pyspark DataframePandas 或 Pyspark 数据框中连续列的实际差异和百分比差异
【发布时间】:2016-11-23 20:30:22
【问题描述】:

我想对 pandas 或 pyspark 数据帧中的连续列执行两种不同的计算。

列是周,指标显示为行。 我想计算各列之间的实际差异和百分比差异

输入/输出表,包括。 Excel 中使用的计算显示在下图中。 我想在 pandas 或 pyspark 数据帧上复制这些计算。

附上原始数据:

Metrics         Week20  Week21  Week22  Week23  Week24  Week25  Week26  Week27
Sales           20301   21132   20059   23062   19610   22734   22140   20699
TRXs            739     729     690     779     701     736     762     655
Attachment Rate 4.47    4.44    4.28    4.56    4.41    4.58    4.55    4.96
AOV             27.47   28.99   29.07   29.6    27.97   30.89   29.06   31.6
Profit          5177    5389    5115    5881    5001    5797    5646    5278
Profit per TRX  7.01    7.39    7.41    7.55    7.13    7.88    7.41    8.06

【问题讨论】:

  • 理想情况下,您应该需要包含原始数据和代码而不是图像

标签: pandas pyspark multiple-columns difference


【解决方案1】:

在 pandas 中,您可以使用 pct_change(axis=1)diff(axis=1) 方法:

df = df.set_index('Metrics')

# list of metrics with "actual diff"
actual = ['AOV', 'Attachment Rate']

rep = (df[~df.index.isin(actual)].pct_change(axis=1).round(2)*100).fillna(0).astype(str).add('%')
rep = pd.concat([rep,
                 df[df.index.isin(actual)].diff(axis=1).fillna(0)
                ])


In [131]: rep
Out[131]:
                Week20 Week21 Week22 Week23  Week24 Week25 Week26  Week27
Metrics
Sales             0.0%   4.0%  -5.0%  15.0%  -15.0%  16.0%  -3.0%   -7.0%
TRXs              0.0%  -1.0%  -5.0%  13.0%  -10.0%   5.0%   4.0%  -14.0%
Profit            0.0%   4.0%  -5.0%  15.0%  -15.0%  16.0%  -3.0%   -7.0%
Profit per TRX    0.0%   5.0%   0.0%   2.0%   -6.0%  11.0%  -6.0%    9.0%
Attachment Rate      0  -0.03  -0.16   0.28   -0.15   0.17  -0.03    0.41
AOV                  0   1.52   0.08   0.53   -1.63   2.92  -1.83    2.54

【讨论】:

  • 数据框中的 MaxU 我想要两次计算,而不仅仅是百分比变化。例如,对于销售额、TRX 和利润,我想要百分比变化,而在其他行上我想要实际变化
  • @Demis,请以 text/CSV/TSV 形式提供样本和所需数据集
猜你喜欢
  • 1970-01-01
  • 2012-01-31
  • 2020-10-10
  • 2017-04-29
  • 1970-01-01
  • 1970-01-01
  • 2020-11-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多