我有以下要求来派生如下的新列#请建议。在我的实际数据集中,有超过1000万条记录,并且仅提供样本记录对于给定的P,T &W值,我们需要根据现有列(A1,A2,S1&S2)派生新列D1%&D2%。1)任何时间点,如果S1有值A或B,我们需要将值D1%硬编码为零 2)任何时间点,如果S2有值A或B,我们需要将值D2%硬编码为零 3)如果S1不等于A或B,我们需要计算D1%,如下所示: ((当前 A1 值 – 以前的 A1 值)/以前的 A1 值)* 100
如果 S2 不等于 A 或 B,我们需要计算 D2%,如下所示:((当前 A2 值 – 以前的 A2 值)/以前的 A2 值) * 100
示例 # 对于 P = 10,T = 1,W =1,D1% 为 “0”,因为 S1 的值为 “A”。对于 P = 10,T = 1,W =1,D2% 为 “0”,因为 S2 具有值 “B”。
For P = 10, T = 1, W=2, A1=11 and S1 Is having value ‘C’.
D1% = ((11-10)/10) * 100 = 10%
For P = 10, T = 1, W=2, A2=25 and S2 Is having value ‘C’.
D2% = ((25-20)/20) * 100 = 25%
Input DataFrame:
P T W A1 A2 S1 S2
10 1 1 10 20 A B
10 1 2 11 25 C C
10 1 3 10 15 D D
10 1 4 9 10 C C
10 1 5 8 5 C C
10 2 1 20 40 B A
10 2 2 10 10 C C
10 2 3 15 30 C C
10 2 4 5 20 D D
10 2 5 25 10 C C
Expected Output DataFrame:
P T W A1 A2 S1 S2 D1% D2%
10 1 1 10 20 A B 0 0
10 1 2 11 25 C C 10 25
10 1 3 10 15 D D -9.090909091 -40
10 1 4 9 10 C C -10 -33.33333333
10 1 5 8 5 C C -11.11111111 -50
10 2 1 20 40 B A 0 0
10 2 2 10 10 C C -50 -75
10 2 3 15 30 C C 50 200
10 2 4 5 20 D D -66.66666667 -33.33333333
10 2 5 25 10 C C 400 -50
慕的地8271018
相关分类