首页 > 解决方案 > 在 Pandas 中将多行转换为列

问题描述

我正在尝试将行转换为熊猫中的列,我的示例数据框看起来像

Scode   Pname   Town    State     Cycle    Sqty     Fqty
6000    Naro    Hyd       TS      Feb/Mar   10     20
6000    Naro    Vij       TS      Apr/May   10     20
6000    Naro    Blore     KR      Feb/Mar   100    200
6000    Naro    Cochin    KR      Apr/May   100    200

我认为它可以与 unstack 多个索引一起使用

df = df.set_index(['State', 'C&F', 'HQ','Sample Code','PName','Cycle']).unstack().T

我的示例输出

                        TS    TS        KR       KR
                        Hyd   Vij       Blore    Cochin
Scode   Pname   Cycle   Sqty  Fqty      Sqty    Fqty
6000    Naro    Feb/Mar 10     10        100        100
6000    Naro    Apr/May 20     20        200         200

任何帮助都感激不尽。谢谢

标签: pandas

解决方案


我相信您需要通过所有不是标识符变量的列(如SqtyFqty列)创建 MultiIndex ,然后创建MultiIndex Seriesbystack并最后重塑 by unstack

df = (df.set_index(['Scode', 'Pname', 'Cycle','State','Town'])
        .rename_axis('new', axis=1)
        .stack()
        .unstack(['State','Town','new']))
print (df)
State                  TS                       KR                     
Town                  Hyd         Vij        Blore        Cochin       
new                  Sqty  Fqty  Sqty  Fqty   Sqty   Fqty   Sqty   Fqty
Scode Pname Cycle                                                      
6000  Naro  Apr/May   NaN   NaN  10.0  20.0    NaN    NaN  100.0  200.0
            Feb/Mar  10.0  20.0   NaN   NaN  100.0  200.0    NaN    NaN

推荐阅读