带有行值到列的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宏:打印带有可变列的特定行的值

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

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

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

SQL行值到列

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

到行值列值的numpy的转换

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

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

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

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

Python Pandas:获取与列值匹配的所有行的索引

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

如何在Pandas DataFrame中获得带有特定列的最小值的行?

在Excel中返回带有两个独立行条件的第一列值

在熊猫数据框中的任何列中删除带有“问号”值的行

带有Scrapy的JSONDecodeError:预期值:第1行第1列(字符0)

SELECT带有相应时间的MAX(列值)的行,按名称DISTINCT

如何将带有值列表的列转换为Pandas DataFrame中的行

熊猫只为带有另一个表的公共行设置列值

在数据框中选择带有索引的列和行值

如何在SQL表中返回带有列条件的前一行值?

带有默认名称的NULL值作为列的Sql Server数据透视表行

在另一列中删除转换值后带有日期的行,以建立归因链