当特定的列具有重复的行时,创建列名将为列值重复

时间:2018-08-15 16:05:25

标签: python pandas dataframe stack pivot

我有一个需要旋转的数据框(不知道这是否涉及堆叠或旋转。)

因此,在“年”,“月”和“组”列中有重复值的地方,我想将以下列名移动为变量

因此,如果这是原始DF:

Year  Month  Group  Variable  feature1  feature2  feature3  
2010    6      1      1           12        23        56
2010    6      1      2           34        56        25 

结果将是:

Year  Month  Group  Variable1  feature1_1  feature2_1  feature3_1  Variable2  feature1_2    feature2_2  feature3_2 
 2010    6      1      1           12        23        56               2           34           56       25

我正在寻找符合以下条件的东西-非常感谢您提供任何提示/帮助,

谢谢

晕动

1 个答案:

答案 0 :(得分:2)

IIUC,如果要将其从长转换为宽,可以使用cumcount获取addtional键,然后进行整形。(请注意wide_to_long的反向键)

df['New']=(df.groupby(['Year','Month','Group']).cumcount()+1).astype(str)
w=df.set_index(['Year','Month','Group','New']).unstack().sort_index(level=1,axis=1)
w.columns=pd.Index(w.columns).str.join('_')
w
Out[217]: 
                  Variable_1  feature1_1  feature2_1  feature3_1  Variable_2  \
Year Month Group                                                               
2010 6     1               1          12          23          56           2   
                  feature1_2  feature2_2  feature3_2  
Year Month Group                                      
2010 6     1              34          56          25