繁体   English   中英

熊猫行作为列名-重塑数据框

[英]pandas rows as column names - reshaping dataframe

我有以下格式的表:

  user_id   total_spent purchase_date   purchase_id aisle   department  item_cost
    33      279.3       1/29/18         26          gn      1           25.7
    33      279.3       1/29/18         26          aj      2           17
    33      279.3       1/29/18         26          bs      2           31.7
    33      279.3       1/29/18         26          jt      3           30
    33      279.3       1/29/18         26          tj      3           8.1
    33      279.3       1/29/18         26          ga      4           60.6
    33      279.3       1/29/18         26          tw      4           35.9
    33      279.3       1/29/18         26          aw      5           34.1
    33      279.3       1/29/18         26          te      5           36.2
    26      331.7       11/15/17        85          je      1           93.5
    26      331.7       11/15/17        85          tg      2           21.1
    26      331.7       11/15/17        85          ds      2           23.2
    26      331.7       11/15/17        85          jw      3           48.8
    26      331.7       11/15/17        85          df      3           10.2
    26      331.7       11/15/17        85          lj      4           56.2
    26      331.7       11/15/17        85          oa      4           7
    26      331.7       11/15/17        85          aw      5           32.4
    26      331.7       11/15/17        85          cm      5           39.3

并希望将其转换为每个部门的值,作为诸如Department_1,department_2的列名 。与过道和物料成本相同: dept_aisle_gn,dept_aisle_df等,后跟相应的成本作为列。

换句话说,最后,我想为2个user_ids提供2行,其余信息将显示在列而不是行中。

最初,我从redshift中提取了数据,然后将使用python pandas对其进行操作。 不幸的是,数据透视表或交叉表不适用于redshift。 我尝试了Pandas Pivot,但似乎不适合我。

谢谢。

pd.pivot_table支持此功能。

pd.pivot_table(df,
               index=['user_id', 'total_spent', 'purchase_date', 'purchase_id'],
               columns=['aisle', 'department'],
               values='item_cost',
               aggfunc=np.sum,
               fill_value=0)

# aisle                                          aj    aw    bs    cm    df  \
# department                                      2     5     2     5     3   
# user_id total_spent purchase_date purchase_id                               
# 26      331.7       11/15/17      85            0  32.4   0.0  39.3  10.2   
# 33      279.3       1/29/18       26           17  34.1  31.7   0.0   0.0   

# aisle                                            ds    ga    gn    je  jt  \
# department                                        2     4     1     1   3   
# user_id total_spent purchase_date purchase_id                               
# 26      331.7       11/15/17      85           23.2   0.0   0.0  93.5   0   
# 33      279.3       1/29/18       26            0.0  60.6  25.7   0.0  30   

# aisle                                            jw    lj oa    te    tg   tj  \
# department                                        3     4  4     5     2    3   
# user_id total_spent purchase_date purchase_id                                   
# 26      331.7       11/15/17      85           48.8  56.2  7   0.0  21.1  0.0   
# 33      279.3       1/29/18       26            0.0   0.0  0  36.2   0.0  8.1   

# aisle                                            tw  
# department                                        4  
# user_id total_spent purchase_date purchase_id        
# 26      331.7       11/15/17      85            0.0  
# 33      279.3       1/29/18       26           35.9    

暂无
暂无

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

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