繁体   English   中英

Pandas数据透视表不进行汇总

[英]Pandas Pivot table without aggregating

我有一个数据框df为:

Acct_Id  Acct_Nm   Srvc_Id   Phone_Nm   Phone_plan_value   Srvc_Num
51       Roger     789       Pixel      30                 1
51       Roger     800       iPhone     25                 2
51       Roger     945       Galaxy     40                 3
78       Anjay     100       Nokia      50                 1
78       Anjay     120       Oppo       30                 2
32       Rafa      456       HTC        35                 1

我想转换数据Acct_IdAcct_Nm每个Acct_IdAcct_Nm可以有1行, Acct_Id Acct_Nm

    Acct_Id   Acct_Nm    Srvc_Num_1                             Srvc_Num_2                              Srvc_Num_3
                         Srvc_Id   Phone_Nm   Phone_plan_value  Srvc_Id   Phone_Nm   Phone_plan_value   Srvc_Id   Phone_Nm   Phone_plan_value
          51  Roger      789       Pixel      30                800       iPhone     25                 945       Galaxy     40
          78  Anjay      100       Nokia      50                120       Oppo       30
          32  Rafa       456       HTC        35

我不确定如何在熊猫中实现同样的目标。

更像是pivot问题,但需要swaplevelsort_index

df.set_index(['Acct_Id','Acct_Nm','Srvc_Num']).\
   unstack().\
   swaplevel(1,0,axis=1).\
   sort_index(level=0,axis=1).add_prefix('Srvc_Num_')


Out[289]: 

Srvc_Num               Srvc_Num_1                                             \
                Srvc_Num_Phone_Nm Srvc_Num_Phone_plan_value Srvc_Num_Srvc_Id   
Acct_Id Acct_Nm                                                                
32      Rafa                  HTC                      35.0            456.0   
51      Roger               Pixel                      30.0            789.0   
78      Anjay               Nokia                      50.0            100.0   
Srvc_Num               Srvc_Num_2                                             \
                Srvc_Num_Phone_Nm Srvc_Num_Phone_plan_value Srvc_Num_Srvc_Id   
Acct_Id Acct_Nm                                                                
32      Rafa                 None                       NaN              NaN   
51      Roger              iPhone                      25.0            800.0   
78      Anjay                Oppo                      30.0            120.0   
Srvc_Num               Srvc_Num_3                                             
                Srvc_Num_Phone_Nm Srvc_Num_Phone_plan_value Srvc_Num_Srvc_Id  
Acct_Id Acct_Nm                                                               
32      Rafa                 None                       NaN              NaN  
51      Roger              Galaxy                      40.0            945.0  
78      Anjay                None                       NaN              NaN  

这是pivot_table

pd.pivot_table(df,index=['Acct_Id','Acct_Nm'],columns=['Srvc_Num'],values=['Phone_Nm','Phone_plan_value','Srvc_Id'],aggfunc='first')

怎么样:

df.set_index(['Acct_Id', 'Acct_Nm', 'Srvc_Num']).unstack().swaplevel(0, 1, axis = 1).sort_index(axis = 1)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM