【问题标题】:Pandas Transpose using PivotPandas 使用 Pivot 转置
【发布时间】:2019-04-05 05:08:21
【问题描述】:

我知道有多种解决方案,但我不确定我是否不能将其应用于我的案例。一点帮助会让我明白下次更好地使用它:

我的输入数据:

OID  V   ED  D   F   SF   SPID   SP   M    A    V
1    V1  E1  D1  F1  SF1  1      SP1  1.6  2.5  3.5
1    V1  E1  D1  F1  SF1  2      SP2  2.6  3.5  4.5

我的输出数据必须如下所示:

OID  V   ED  D   F   SF   SPID   SP   T   H
1    V1  E1  D1  F1  SF1  1      SP1  M   1.6
1    V1  E1  D1  F1  SF1  1      SP1  A   2.5
1    V1  E1  D1  F1  SF1  1      SP1  V   3.5
1    V1  E1  D1  F1  SF1  2      SP2  M   1.6
1    V1  E1  D1  F1  SF1  2      SP2  A   2.5
1    V1  E1  D1  F1  SF1  2      SP2  V   3.5

我的代码是:

out=df.pivot_table(values=['M','A','V'], columns=values=['M','A','V'],
index=['OID','V','ED','D','F','SF','SPID','SP']).reset_index()
print(out)

TIA!

【问题讨论】:

  • 你需要融化,而不是枢轴。 df.melt(['OID','V','ED','D','F','SF','SPID','SP'])

标签: python-3.x pandas pivot pivot-table transpose


【解决方案1】:

使用melt 而不是pivot

(df.melt(df.columns[:-3], var_name='T', value_name='H')
   .sort_values('SPID'))

   OID   V  ED   D   F   SF  SPID   SP    T    H
0    1  V1  E1  D1  F1  SF1     1  SP1    M  1.6
2    1  V1  E1  D1  F1  SF1     1  SP1    A  2.5
4    1  V1  E1  D1  F1  SF1     1  SP1  V.1  3.5
1    1  V1  E1  D1  F1  SF1     2  SP2    M  2.6
3    1  V1  E1  D1  F1  SF1     2  SP2    A  3.5
5    1  V1  E1  D1  F1  SF1     2  SP2  V.1  4.5

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-27
    • 2016-07-19
    • 1970-01-01
    • 2017-06-28
    • 1970-01-01
    • 2017-10-24
    • 1970-01-01
    • 2015-09-17
    相关资源
    最近更新 更多