【问题标题】:Pivot a dataframe in pandas [duplicate]在熊猫中旋转数据框[重复]
【发布时间】:2022-01-21 10:55:02
【问题描述】:

我有一个数据框,例如:

Name Program INFO1 INFO2 INFO3
Dog  P1      A     B    67
Dog  P2      A     F    89
Cat  P1      L     M    - 
Bird P1      A     -    1
Bird P2      A     B    2
Bird P3      J     K    90

我想转换这个数据框,每个Name只有一行

Name P1_INFO1 P1_INFO2 P1_INFO3 P2_INFO1 P2_INFO2 P2_INFO3 P3_INFO1 P3_INFO2 P3_INFO3
Dog  A        B        67       A        F        89       NA       NA       NA
Cat  L        M        -        NA       NA       NA       NA       NA       NA
Bird A        -        1        A        B        -        J        K        90

【问题讨论】:

    标签: python-3.x pandas


    【解决方案1】:

    堆叠和取消堆叠,然后将多索引列折叠成一层列

    s=df.set_index(['Name','Program']).stack().unstack('Name').T
    s.columns = [f'{a}_{b}' for a, b in s.columns]
    
        P1_INFO1 P1_INFO2 P1_INFO3 P2_INFO1 P2_INFO2 P2_INFO3 P3_INFO1 P3_INFO2  \
    Name                                                                           
    Bird        A        -        1        A        B        2        J        K   
    Cat         L        M        -      NaN      NaN      NaN      NaN      NaN   
    Dog         A        B       67        A        F       89      NaN      NaN   
    
         P3_INFO3  
    Name           
    Bird       90  
    Cat       NaN  
    Dog       NaN  
    

    【讨论】:

      【解决方案2】:

      df.pivot 与适当的参数一起使用

      df.pivot(index=['Name'], columns=['Program'], values=['INFO1', 'INFO2', 'INFO3'])
      

      【讨论】:

        猜你喜欢
        • 2012-07-23
        • 2012-07-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-02-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多