【问题标题】:Advance grouping and reshaping transformation using pandas使用 pandas 推进分组和重塑转换
【发布时间】:2020-07-21 18:30:34
【问题描述】:

我有一个这样的熊猫数据框。

Territory_id    client_id   patient_id  Total Clinic    Clinic Number   Attribute.2         Value
    43              172         6021        1               Clinic 1    Service Date      06/22/2017 
    43              172         6021        1               Clinic 1    Product              A
    43              172         6021        1               Clinic 1    Qty                  1
    43              172         6021        1               Clinic 1    Amount              80.63
    43              172         6021        1               Clinic 1    Age                11 y 4 m 
    43              172         6021        1               Clinic 1    Days Last Clinic    0
    43              172         6137        1               Clinic 1    Service Date      06/22/2017 
    43              172         6137        1               Clinic 1    Product              B
    43              172         6137        1               Clinic 1    Qty                  1
    43              172         6137        1               Clinic 1    Amount              80.63
    43              172         6137        1               Clinic 1    Age                  7 y  
    43              172         6137        1               Clinic 1    Days Last Clinic     0
    43              187         5658        5               Clinic 1    Service Date      06/07/2017 
    43              187         5658        5               Clinic 1    Product               C
    43              187         5658        5               Clinic 1    Qty                   1
    43              187         5658        5               Clinic 1    Amount                0
    43              187         5658        5               Clinic 1    Age                9 y 1 m 
    43              187         5658        5               Clinic 1    Days Last Clinic     0
    43              187         5658        5               Clinic 2    Service Date        06/30/2017 
    43              187         5658        5               Clinic 2    Product               D
    43              187         5658        5               Clinic 2    Qty                   2
    43              187         5658        5               Clinic 2    Amount              52.48
    43              187         5658        5               Clinic 2    Age                 9 y 1 m 
    43              187         5658        5               Clinic 2    Days Last Clinic    23
    43              187         5658        5               Clinic 3    Service Date       09/12/2017 
    43              187         5658        5               Clinic 3    Product               E
    43              187         5658        5               Clinic 3    Qty                   3
    43              187         5658        5               Clinic 3    Amount              78.72
    43              187         5658        5               Clinic 3    Age                9 y 4 m 
    43              187         5658        5               Clinic 3    Days Last Clinic    74
    43              187         5658        5               Clinic 4    Service Date       09/05/2018 
    43              187         5658        5               Clinic 4    Product               F
    43              187         5658        5               Clinic 4    Qty                   2
    43              187         5658        5               Clinic 4    Amount              53.72
    43              187         5658        5               Clinic 4    Age                 10 y 4 m 
    43              187         5658        5               Clinic 4    Days Last Clinic     358

我希望通过 Attribute.2 列名重新调整结果。有 6 个属性 Service Datea、Product、Qty、Amount、Age、Day Last Clinic。我希望这些列应该移动到 1 行,其他列值应该与最后一个或第一个相同。

我尝试使用数据透视表,但它只返回第一条记录。

df.pivot_table(index=['Territory_id','client_id','patient_id','Total Clinic','Clinic Number'],
              columns='Attribute.2',
              values='Value',
              aggfunc='first'
              )

需要帮助。

谢谢

【问题讨论】:

  • 您需要在该 pivot_table 语句的末尾添加 .reset_index() 吗?

标签: python pandas reshape data-transform


【解决方案1】:

最后试试reset_index

df.pivot_table(index=['Territory_id','client_id','patient_id','Total Clinic','Clinic Number'],
              columns='Attribute.2',
              values='Value',
              aggfunc='first'
              ).reset_index()

输出:

Attribute.2  Territory_id  client_id  patient_id  Total Clinic Clinic Number       Age Amount Days Last Clinic Product Qty Service Date
0                      43        172        6021             1      Clinic 1  11 y 4 m  80.63                0       A   1   06/22/2017
1                      43        172        6137             1      Clinic 1       7 y  80.63                0       B   1   06/22/2017
2                      43        187        5658             5      Clinic 1   9 y 1 m      0                0       C   1   06/07/2017
3                      43        187        5658             5      Clinic 2   9 y 1 m  52.48               23       D   2   06/30/2017
4                      43        187        5658             5      Clinic 3   9 y 4 m  78.72               74       E   3   09/12/2017
5                      43        187        5658             5      Clinic 4  10 y 4 m  53.72              358       F   2   09/05/2018

【讨论】:

  • 是否有任何替代方案,它缺少大型数据集上的一些值,我无法识别
  • 是.... 见this post 可能有不同的旋转方式。
猜你喜欢
  • 2020-07-17
  • 2017-04-06
  • 1970-01-01
  • 2019-12-01
  • 2021-04-15
  • 2017-05-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多