带有行值到列的Python摘要

我有以下输入

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,如上所示。

特伦顿·麦金尼
  • 使用pandas.DataFrame.pivot,用于从长格式转换为宽格式。
    • 如果您不希望命名列,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

使用difflast-从前几周的平均值中减去Wk5

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

没有difflast-从前几周的平均值中减去Wk5

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

带有摘要行的MVVM DataGrid

如何动态获取行值作为带有摘要信息的标题

将带有观察值的列添加到esttab摘要统计信息表

按列键更新带有摘要的表

将地图对象(带有动态键和值)渲染到有角度的mat-table(列和行作为地图的键和值)中

在特定列中保留带有值的行?

Excel宏:打印带有可变列的特定行的值

在 Python 中将列值转换为带有计数的列

根据列值为每一行生成摘要

Ext JS 4.1.1-摘要网格-如何使用摘要行中的其他值来计算摘要列

如何将一列从特定行一直复制到带有值的最后一行?

使用python编写带有前缀值的CSV行

带有下一行值的Python循环

具有合计值的月份从行到列的枢轴日

如何将键映射到多个值到带有多个值的数据框列?

将行值转换为带有Spark Scala中另一列的值的列

Python Pandas groupby,行值到列标题

Python:将列值的行收集到单行

SQL行值到列

MySQL 8.0 返回带有 LEFT JOIN 的 0 行,而不是返回带有 0 列值的 1 行

Oracle SUM返回带有从SELECT UNION中恢复的相同值的错误摘要

单选+复选框的值,但单选按钮是未定义的总和。为什么?(带有摘要)

撇取摘要中,无法选择一列中具有0且另一列中的值不同于0的行

Pyspark DataFrame如何在所有列中删除带有空值的行?

到行值列值的numpy的转换

VBA 问题将特定行/列从 Word 表(带有合并行)复制到 Excel

R中用于分类数据的行到列(带有通用编号的cols)?

JDBCRealm中使用带有散列密码的tomcat基本/摘要身份验证的方法?

Python-如何将if条件中的值存储到带有追加的列表中