我有以下输入
Col1 col2 col3
AA. Wk1. 10
BB. Wk2. 30
CC. Wk3. 5
DD. Wk4. 20
AA. Wk4. 5
AA. Wk5. 10
我想要使用pandas或以下任何python包的输出
Col1. Wk1 Wk2 Wk3 wk4 wk5 difflast
AA. 10. 0. 0. 5. 10. 5
BB. 0. 30. 0. 0. 0. 0
CC. 0. 0. 5. 0. 0. 0
DD. 0. 0. 0. 20. 0. -20
如果加上了一周,则应该花费上两周的差值n,如上所示。
col2
在这种情况下,请使用dfp.columns.name = None
.iloc
。
:
获取所有行-1
获取最后一列,-2
获取倒数第二列。.mean(axis=1)
取逐行平均值。0
包括在计算中。
iloc[:, -1]
仅获取最后一列
-1
始终是最后一列,倒数-2
第二,依此类推。.iloc[:, 0:-1]
获取除最后一列以外的所有列。
0:-1
,不包括最后一个值。dfp = df.pivot(index='Col1', columns='col2', values='col3').fillna(0)
col2 Wk1. Wk2. Wk3. Wk4. Wk5.
Col1
AA. 10.0 0.0 0.0 5.0 10.0
BB. 0.0 30.0 0.0 0.0 0.0
CC. 0.0 0.0 5.0 0.0 0.0
DD. 0.0 0.0 0.0 20.0 0.0
# take difference
dfp['difflast'] = dfp.iloc[:, -1] - dfp.iloc[:, -2]
col2 Wk1. Wk2. Wk3. Wk4. Wk5. difflast
Col1
AA. 10.0 0.0 0.0 5.0 10.0 5.0
BB. 0.0 30.0 0.0 0.0 0.0 0.0
CC. 0.0 0.0 5.0 0.0 0.0 0.0
DD. 0.0 0.0 0.0 20.0 0.0 -20.0
dfp['last - avg'] = dfp.iloc[:, -2] - dfp.iloc[:, 0:-2].mean(axis=1)
col2 Wk1. Wk2. Wk3. Wk4. Wk5. difflast last - avg
Col1
AA. 10.0 0.0 0.0 5.0 10.0 5.0 6.25
BB. 0.0 30.0 0.0 0.0 0.0 0.0 -7.50
CC. 0.0 0.0 5.0 0.0 0.0 0.0 -1.25
DD. 0.0 0.0 0.0 20.0 0.0 -20.0 -5.00
dfp['last - avg'] = dfp.iloc[:, -1] - dfp.iloc[:, 0:-1].mean(axis=1)
col2 Wk1. Wk2. Wk3. Wk4. Wk5. last - avg
Col1
AA. 10.0 0.0 0.0 5.0 10.0 6.25
BB. 0.0 30.0 0.0 0.0 0.0 -7.50
CC. 0.0 0.0 5.0 0.0 0.0 -1.25
DD. 0.0 0.0 0.0 20.0 0.0 -5.00
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句