熊猫在这里是初学者,所以如果这个问题不合理,请道歉。 我的数据是4个季度的数据,每个季度每个销售人员的销售价值是:
QTR Name QTR_Sales Sales_YTD Rel_Diff
Q1 Anna 3002 3002 -171
Q2 Anna 3532 6534 -358
Q3 Anna 4487 11021 -506
Q4 Anna 3454 14475 259
Q1 Dave 3173 3173 0
Q2 Dave 3890 7063 0
Q3 Dave 4993 12056 0
Q4 Dave 3195 *15251* 0
Q1 Helen 2429 2429 -744
Q2 Helen 2235 4664 -1655
Q3 Helen 4615 9279 -378
Q4 Helen 3258 12537 63
Q1 Jim 3339 3339 166
Q2 Jim 3082 6421 -808
Q3 Jim 3156 9577 -1837
Q4 Jim 2382 11959 -813
我需要计算每个季度(第Rel_Diff
)的相对差异,即“赢家”(全年最高销售额,即Dave)和其他人之间的相对差异。每个人每季度都会被推荐给戴夫。在
我在Excel中完成了这项工作,找到“赢家”并将其存储在it cellI1
。。。在
…然后把一切都提到“赢家”:
=QTR_Sales-INDEX(QTR_Sales;MATCH(QTR&$I$1;QTR&Name;0))
(我甚至不会把所有的东西都放在一个公式里:)
This post显示hot to do几乎类似,但没有季度要求,并且参考值总是数据帧中的第一个,这在我的任务中不是这样。在
如何使用pandas
来完成此操作?在
我们可以通过按
Name
进行分组,并对每个分组的QTR_Sales
求和来确定赢家:或者,可以通过查找带有
^{pr2}$Sales_YTD
的最大值:接下来,我们可以选择子数据帧,其中的行对应于获胜者:
现在只在}(在
df
列上合并df
子数据帧。 这可能是大部分魔术发生的地方,因为现在每一行都包含原始的QTR_Sales
和获胜者的{QTR_Sales_max
列中的值):计算
Rel_Diff
现在很容易:收益率
您可以使用
DataFrame.eval()
函数合并属于“winner”的行的子集,并计算“Rel\u Diff2”:相关问题 更多 >
编程相关推荐