【发布时间】:2020-07-26 05:48:21
【问题描述】:
我有 2 个如下数据框
Teacher_Commission_df 如下
+---------+---------+----------+---------+
| Subject | Harare | Redcliff | Norton |
+---------+---------+----------+---------+
| Science | 0.100 | 0.125 | 0.145 |
+---------+---------+----------+---------+
| English | 0.125 | 0.150 | 0.170 |
+---------+---------+----------+---------+
| Maths | 0.090 | 0.115 | 0.135 |
+---------+---------+----------+---------+
| Music | 0.100 | 0.125 | 0.145 |
+---------+---------+----------+---------+
| Total | 0.415 | 0.515 | 0.595 |
+---------+---------+----------+---------+
Students_df 如下。 (注意Maths 在Harare 和Norton 中没有学生)
+---------+--------+----------+--------+
| Subject | Harare | Redcliff | Norton |
+---------+--------+----------+--------+
| Science | 15 | 18 | 20 |
+---------+--------+----------+--------+
| English | 35 | 33 | 31 |
+---------+--------+----------+--------+
| Maths | | 25 | |
+---------+--------+----------+--------+
| Music | 40 | 42 | 45 |
+---------+--------+----------+--------+
我需要计算每个城市的加权平均佣金,有条件。
首先,我将给出所需的输出并解释方法。
所需的输出如下。
+------------+--------+----------+--------+
| Total_Paid | Harare | Redcliff | Norton |
+------------+--------+----------+--------+
| Science | 4.62 | 4.37 | 6.30 |
+------------+--------+----------+--------+
| English | 13.46 | 9.61 | 11.46 |
+------------+--------+----------+--------+
| Maths | 0.00 | 5.58 | 0.00 |
+------------+--------+----------+--------+
| Music | 12.31 | 10.19 | 14.18 |
+------------+--------+----------+--------+
计算方法
如果在任何城市列[Harare, Redcliff, Norton] 中,如果任何学科[Science, English, Maths, Music] 的学生为零,则应在权重中删除该特定subject 的Teacher_Commission。
例如在Students_df:取Science主题的城市Harare列。因为,Maths 在Harare 中是zero,所以teacher_Commission 将计算如下。 15 * [0.10 / (0.415 - 0.09)] = 4.62 请注意在总数的分母中删除了 0.09。在Radcliff 中,它在不删除的情况下计算为18 * [0.125 / 0.515] = 4.37
我希望我的解释清楚。
这可以通过使用IF 条件在Microsoft Excel 中轻松完成。但是,我正在寻找一个可扩展的 pandas 解决方案。
我不确定如何开始计算过程。因此,请给我一个开始解决这个问题。
-----------------------------------------------------------------------------------------
UPDATE
I've managed to solve this. Refer to my answer below and suggest for any improvements
------------------------------------------------------------------------------------------
【问题讨论】:
-
您能解释一下您是如何获得 41.5% 和 51.5% 的吗?
-
Teacher_Commission_df每一列的总和。它实际上是percentage。为了便于解释,我在Calculation methodology中提到了%。我已经解决了。在下面参考我自己的答案